﻿2026-06-21T07:19:09.4621629Z ##[group]Run ./traceable-reqs check --json
2026-06-21T07:19:09.4622007Z [36;1m./traceable-reqs check --json[0m
2026-06-21T07:19:09.4634623Z shell: /usr/bin/bash -e {0}
2026-06-21T07:19:09.4634900Z ##[endgroup]
2026-06-21T07:19:09.4861623Z {
2026-06-21T07:19:09.4862135Z   "schemaVersion": 1,
2026-06-21T07:19:09.4862950Z   "summary": {
2026-06-21T07:19:09.4863320Z     "requirementCount": 275,
2026-06-21T07:19:09.4863726Z     "completeCount": 275,
2026-06-21T07:19:09.4864117Z     "incompleteCount": 0,
2026-06-21T07:19:09.4864502Z     "findingCount": 0
2026-06-21T07:19:09.4864851Z   },
2026-06-21T07:19:09.4865171Z   "requirements": [
2026-06-21T07:19:09.4865507Z     {
2026-06-21T07:19:09.4865887Z       "id": "REQ-API-1",
2026-06-21T07:19:09.4866392Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T07:19:09.4866960Z       "requiredStages": [
2026-06-21T07:19:09.4867332Z         "impl",
2026-06-21T07:19:09.4867661Z         "unit",
2026-06-21T07:19:09.4867990Z         "int"
2026-06-21T07:19:09.4868360Z       ],
2026-06-21T07:19:09.4868668Z       "stages": {
2026-06-21T07:19:09.4869079Z         "doc": {
2026-06-21T07:19:09.4869414Z           "complete": false,
2026-06-21T07:19:09.4869804Z           "evidence": []
2026-06-21T07:19:09.4870151Z         },
2026-06-21T07:19:09.4870471Z         "impl": {
2026-06-21T07:19:09.4871417Z           "complete": true,
2026-06-21T07:19:09.4871798Z           "evidence": [
2026-06-21T07:19:09.4872141Z             {
2026-06-21T07:19:09.4872508Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4872972Z               "line": 15
2026-06-21T07:19:09.4873315Z             }
2026-06-21T07:19:09.4873625Z           ]
2026-06-21T07:19:09.4873929Z         },
2026-06-21T07:19:09.4874239Z         "int": {
2026-06-21T07:19:09.4874573Z           "complete": true,
2026-06-21T07:19:09.4874949Z           "evidence": [
2026-06-21T07:19:09.4875292Z             {
2026-06-21T07:19:09.4875673Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.4876164Z               "line": 13
2026-06-21T07:19:09.4876505Z             }
2026-06-21T07:19:09.4876824Z           ]
2026-06-21T07:19:09.4877135Z         },
2026-06-21T07:19:09.4877445Z         "unit": {
2026-06-21T07:19:09.4877774Z           "complete": true,
2026-06-21T07:19:09.4878144Z           "evidence": [
2026-06-21T07:19:09.4878487Z             {
2026-06-21T07:19:09.4878854Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4879358Z               "line": 717
2026-06-21T07:19:09.4879716Z             },
2026-06-21T07:19:09.4880025Z             {
2026-06-21T07:19:09.4880387Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4880816Z               "line": 804
2026-06-21T07:19:09.4881160Z             }
2026-06-21T07:19:09.4881468Z           ]
2026-06-21T07:19:09.4881766Z         }
2026-06-21T07:19:09.4882077Z       }
2026-06-21T07:19:09.4882372Z     },
2026-06-21T07:19:09.4882673Z     {
2026-06-21T07:19:09.4883012Z       "id": "REQ-API-2",
2026-06-21T07:19:09.4883603Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T07:19:09.4884237Z       "requiredStages": [
2026-06-21T07:19:09.4884608Z         "impl",
2026-06-21T07:19:09.4884923Z         "unit",
2026-06-21T07:19:09.4885242Z         "int"
2026-06-21T07:19:09.4885562Z       ],
2026-06-21T07:19:09.4885886Z       "stages": {
2026-06-21T07:19:09.4886219Z         "doc": {
2026-06-21T07:19:09.4886566Z           "complete": false,
2026-06-21T07:19:09.4886945Z           "evidence": []
2026-06-21T07:19:09.4887284Z         },
2026-06-21T07:19:09.4887608Z         "impl": {
2026-06-21T07:19:09.4887962Z           "complete": true,
2026-06-21T07:19:09.4888339Z           "evidence": [
2026-06-21T07:19:09.4888691Z             {
2026-06-21T07:19:09.4889134Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.4889600Z               "line": 17
2026-06-21T07:19:09.4889956Z             },
2026-06-21T07:19:09.4890276Z             {
2026-06-21T07:19:09.4890962Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.4891424Z               "line": 20
2026-06-21T07:19:09.4891759Z             },
2026-06-21T07:19:09.4892081Z             {
2026-06-21T07:19:09.4892456Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.4893081Z               "line": 142
2026-06-21T07:19:09.4893434Z             },
2026-06-21T07:19:09.4893758Z             {
2026-06-21T07:19:09.4894143Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4894601Z               "line": 24
2026-06-21T07:19:09.4894962Z             },
2026-06-21T07:19:09.4895287Z             {
2026-06-21T07:19:09.4895664Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4896127Z               "line": 41
2026-06-21T07:19:09.4896465Z             },
2026-06-21T07:19:09.4896784Z             {
2026-06-21T07:19:09.4897160Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4897611Z               "line": 213
2026-06-21T07:19:09.4897973Z             },
2026-06-21T07:19:09.4898283Z             {
2026-06-21T07:19:09.4898660Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4899175Z               "line": 255
2026-06-21T07:19:09.4899533Z             },
2026-06-21T07:19:09.4899848Z             {
2026-06-21T07:19:09.4900231Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4900687Z               "line": 334
2026-06-21T07:19:09.4901040Z             },
2026-06-21T07:19:09.4901374Z             {
2026-06-21T07:19:09.4901757Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4902203Z               "line": 397
2026-06-21T07:19:09.4902556Z             },
2026-06-21T07:19:09.4902873Z             {
2026-06-21T07:19:09.4903253Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4903712Z               "line": 436
2026-06-21T07:19:09.4904069Z             },
2026-06-21T07:19:09.4904375Z             {
2026-06-21T07:19:09.4904761Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4905215Z               "line": 17
2026-06-21T07:19:09.4905561Z             },
2026-06-21T07:19:09.4905876Z             {
2026-06-21T07:19:09.4906267Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4906776Z               "line": 30
2026-06-21T07:19:09.4907155Z             },
2026-06-21T07:19:09.4907489Z             {
2026-06-21T07:19:09.4907868Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4908327Z               "line": 63
2026-06-21T07:19:09.4908685Z             },
2026-06-21T07:19:09.4909291Z             {
2026-06-21T07:19:09.4909673Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4910126Z               "line": 77
2026-06-21T07:19:09.4910479Z             }
2026-06-21T07:19:09.4910800Z           ]
2026-06-21T07:19:09.4911100Z         },
2026-06-21T07:19:09.4911396Z         "int": {
2026-06-21T07:19:09.4911720Z           "complete": true,
2026-06-21T07:19:09.4912086Z           "evidence": [
2026-06-21T07:19:09.4912434Z             {
2026-06-21T07:19:09.4912821Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.4913320Z               "line": 14
2026-06-21T07:19:09.4913714Z             },
2026-06-21T07:19:09.4914052Z             {
2026-06-21T07:19:09.4914497Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.4915021Z               "line": 187
2026-06-21T07:19:09.4915421Z             }
2026-06-21T07:19:09.4915785Z           ]
2026-06-21T07:19:09.4916150Z         },
2026-06-21T07:19:09.4916513Z         "unit": {
2026-06-21T07:19:09.4916908Z           "complete": true,
2026-06-21T07:19:09.4917327Z           "evidence": [
2026-06-21T07:19:09.4917725Z             {
2026-06-21T07:19:09.4918152Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.4918654Z               "line": 82
2026-06-21T07:19:09.4919174Z             },
2026-06-21T07:19:09.4919527Z             {
2026-06-21T07:19:09.4920166Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.4920672Z               "line": 279
2026-06-21T07:19:09.4921043Z             },
2026-06-21T07:19:09.4921398Z             {
2026-06-21T07:19:09.4921827Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4922514Z               "line": 709
2026-06-21T07:19:09.4922877Z             },
2026-06-21T07:19:09.4923220Z             {
2026-06-21T07:19:09.4923647Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4924146Z               "line": 720
2026-06-21T07:19:09.4924537Z             },
2026-06-21T07:19:09.4924875Z             {
2026-06-21T07:19:09.4925309Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4925819Z               "line": 873
2026-06-21T07:19:09.4926210Z             },
2026-06-21T07:19:09.4926543Z             {
2026-06-21T07:19:09.4926938Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4927425Z               "line": 919
2026-06-21T07:19:09.4927807Z             },
2026-06-21T07:19:09.4928136Z             {
2026-06-21T07:19:09.4928531Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4929067Z               "line": 143
2026-06-21T07:19:09.4929434Z             },
2026-06-21T07:19:09.4929753Z             {
2026-06-21T07:19:09.4930139Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.4930569Z               "line": 187
2026-06-21T07:19:09.4930922Z             }
2026-06-21T07:19:09.4931237Z           ]
2026-06-21T07:19:09.4931547Z         }
2026-06-21T07:19:09.4931831Z       }
2026-06-21T07:19:09.4932135Z     },
2026-06-21T07:19:09.4932430Z     {
2026-06-21T07:19:09.4932745Z       "id": "REQ-API-3",
2026-06-21T07:19:09.4933207Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T07:19:09.4933733Z       "requiredStages": [
2026-06-21T07:19:09.4934109Z         "impl",
2026-06-21T07:19:09.4934431Z         "unit",
2026-06-21T07:19:09.4934754Z         "int"
2026-06-21T07:19:09.4935064Z       ],
2026-06-21T07:19:09.4935383Z       "stages": {
2026-06-21T07:19:09.4935708Z         "doc": {
2026-06-21T07:19:09.4936056Z           "complete": false,
2026-06-21T07:19:09.4936426Z           "evidence": []
2026-06-21T07:19:09.4936775Z         },
2026-06-21T07:19:09.4937103Z         "impl": {
2026-06-21T07:19:09.4937451Z           "complete": true,
2026-06-21T07:19:09.4937813Z           "evidence": [
2026-06-21T07:19:09.4938152Z             {
2026-06-21T07:19:09.4938530Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.4939039Z               "line": 27
2026-06-21T07:19:09.4939395Z             },
2026-06-21T07:19:09.4939708Z             {
2026-06-21T07:19:09.4964502Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4965021Z               "line": 566
2026-06-21T07:19:09.4965375Z             }
2026-06-21T07:19:09.4965685Z           ]
2026-06-21T07:19:09.4965992Z         },
2026-06-21T07:19:09.4966304Z         "int": {
2026-06-21T07:19:09.4966658Z           "complete": true,
2026-06-21T07:19:09.4967035Z           "evidence": [
2026-06-21T07:19:09.4967378Z             {
2026-06-21T07:19:09.4967779Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.4968251Z               "line": 261
2026-06-21T07:19:09.4968610Z             }
2026-06-21T07:19:09.4968922Z           ]
2026-06-21T07:19:09.4969299Z         },
2026-06-21T07:19:09.4969609Z         "unit": {
2026-06-21T07:19:09.4969952Z           "complete": true,
2026-06-21T07:19:09.4970314Z           "evidence": [
2026-06-21T07:19:09.4970676Z             {
2026-06-21T07:19:09.4971062Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.4971517Z               "line": 280
2026-06-21T07:19:09.4971880Z             },
2026-06-21T07:19:09.4972186Z             {
2026-06-21T07:19:09.4972581Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.4973033Z               "line": 948
2026-06-21T07:19:09.4973383Z             }
2026-06-21T07:19:09.4973953Z           ]
2026-06-21T07:19:09.4974274Z         }
2026-06-21T07:19:09.4974565Z       }
2026-06-21T07:19:09.4974856Z     },
2026-06-21T07:19:09.4975152Z     {
2026-06-21T07:19:09.4975452Z       "id": "REQ-API-4",
2026-06-21T07:19:09.4978535Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T07:19:09.4981255Z       "requiredStages": [
2026-06-21T07:19:09.4981631Z         "doc",
2026-06-21T07:19:09.4981953Z         "impl",
2026-06-21T07:19:09.4982258Z         "unit"
2026-06-21T07:19:09.4982572Z       ],
2026-06-21T07:19:09.4982883Z       "stages": {
2026-06-21T07:19:09.4983212Z         "doc": {
2026-06-21T07:19:09.4983545Z           "complete": true,
2026-06-21T07:19:09.4983923Z           "evidence": [
2026-06-21T07:19:09.4984257Z             {
2026-06-21T07:19:09.4984594Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.4985012Z               "line": 149
2026-06-21T07:19:09.4985355Z             }
2026-06-21T07:19:09.4985674Z           ]
2026-06-21T07:19:09.4985970Z         },
2026-06-21T07:19:09.4986271Z         "impl": {
2026-06-21T07:19:09.4986609Z           "complete": true,
2026-06-21T07:19:09.4986980Z           "evidence": [
2026-06-21T07:19:09.4987311Z             {
2026-06-21T07:19:09.4987706Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4988184Z               "line": 484
2026-06-21T07:19:09.4988555Z             }
2026-06-21T07:19:09.4988918Z           ]
2026-06-21T07:19:09.4989314Z         },
2026-06-21T07:19:09.4989624Z         "int": {
2026-06-21T07:19:09.4989960Z           "complete": false,
2026-06-21T07:19:09.4990362Z           "evidence": []
2026-06-21T07:19:09.4990687Z         },
2026-06-21T07:19:09.4990991Z         "unit": {
2026-06-21T07:19:09.4991321Z           "complete": true,
2026-06-21T07:19:09.4991697Z           "evidence": [
2026-06-21T07:19:09.4992022Z             {
2026-06-21T07:19:09.4992395Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4992837Z               "line": 657
2026-06-21T07:19:09.4993185Z             },
2026-06-21T07:19:09.4993490Z             {
2026-06-21T07:19:09.4993858Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4994292Z               "line": 681
2026-06-21T07:19:09.4994635Z             },
2026-06-21T07:19:09.4994946Z             {
2026-06-21T07:19:09.4995314Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.4995757Z               "line": 705
2026-06-21T07:19:09.4996111Z             }
2026-06-21T07:19:09.4996430Z           ]
2026-06-21T07:19:09.4996725Z         }
2026-06-21T07:19:09.4997026Z       }
2026-06-21T07:19:09.4997312Z     },
2026-06-21T07:19:09.4997616Z     {
2026-06-21T07:19:09.4997928Z       "id": "REQ-ARCH-1",
2026-06-21T07:19:09.4998382Z       "title": "Many small acyclically-layered crates",
2026-06-21T07:19:09.4998754Z       "requiredStages": [
2026-06-21T07:19:09.4999125Z         "impl"
2026-06-21T07:19:09.4999554Z       ],
2026-06-21T07:19:09.4999874Z       "stages": {
2026-06-21T07:19:09.5000208Z         "doc": {
2026-06-21T07:19:09.5000559Z           "complete": false,
2026-06-21T07:19:09.5000817Z           "evidence": []
2026-06-21T07:19:09.5001046Z         },
2026-06-21T07:19:09.5001247Z         "impl": {
2026-06-21T07:19:09.5001475Z           "complete": true,
2026-06-21T07:19:09.5001718Z           "evidence": [
2026-06-21T07:19:09.5001933Z             {
2026-06-21T07:19:09.5002176Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T07:19:09.5002467Z               "line": 18
2026-06-21T07:19:09.5002700Z             },
2026-06-21T07:19:09.5003040Z             {
2026-06-21T07:19:09.5003298Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T07:19:09.5003584Z               "line": 12
2026-06-21T07:19:09.5003814Z             },
2026-06-21T07:19:09.5004013Z             {
2026-06-21T07:19:09.5004261Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T07:19:09.5004652Z               "line": 12
2026-06-21T07:19:09.5004876Z             }
2026-06-21T07:19:09.5005073Z           ]
2026-06-21T07:19:09.5005267Z         },
2026-06-21T07:19:09.5005473Z         "int": {
2026-06-21T07:19:09.5005690Z           "complete": false,
2026-06-21T07:19:09.5005935Z           "evidence": []
2026-06-21T07:19:09.5006166Z         },
2026-06-21T07:19:09.5006366Z         "unit": {
2026-06-21T07:19:09.5006593Z           "complete": false,
2026-06-21T07:19:09.5006842Z           "evidence": []
2026-06-21T07:19:09.5007062Z         }
2026-06-21T07:19:09.5007252Z       }
2026-06-21T07:19:09.5007452Z     },
2026-06-21T07:19:09.5007649Z     {
2026-06-21T07:19:09.5007867Z       "id": "REQ-ARCH-2",
2026-06-21T07:19:09.5008204Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T07:19:09.5008554Z       "requiredStages": [
2026-06-21T07:19:09.5008784Z         "impl"
2026-06-21T07:19:09.5009108Z       ],
2026-06-21T07:19:09.5009314Z       "stages": {
2026-06-21T07:19:09.5009543Z         "doc": {
2026-06-21T07:19:09.5009756Z           "complete": false,
2026-06-21T07:19:09.5009995Z           "evidence": []
2026-06-21T07:19:09.5010220Z         },
2026-06-21T07:19:09.5010414Z         "impl": {
2026-06-21T07:19:09.5010639Z           "complete": true,
2026-06-21T07:19:09.5010879Z           "evidence": [
2026-06-21T07:19:09.5011114Z             {
2026-06-21T07:19:09.5011367Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T07:19:09.5011662Z               "line": 18
2026-06-21T07:19:09.5011887Z             }
2026-06-21T07:19:09.5012083Z           ]
2026-06-21T07:19:09.5012283Z         },
2026-06-21T07:19:09.5012480Z         "int": {
2026-06-21T07:19:09.5012693Z           "complete": false,
2026-06-21T07:19:09.5012945Z           "evidence": []
2026-06-21T07:19:09.5013175Z         },
2026-06-21T07:19:09.5013369Z         "unit": {
2026-06-21T07:19:09.5013586Z           "complete": false,
2026-06-21T07:19:09.5013830Z           "evidence": []
2026-06-21T07:19:09.5014054Z         }
2026-06-21T07:19:09.5014258Z       }
2026-06-21T07:19:09.5014440Z     },
2026-06-21T07:19:09.5014635Z     {
2026-06-21T07:19:09.5014849Z       "id": "REQ-ARCH-3",
2026-06-21T07:19:09.5015217Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T07:19:09.5015613Z       "requiredStages": [
2026-06-21T07:19:09.5015851Z         "impl",
2026-06-21T07:19:09.5016066Z         "unit"
2026-06-21T07:19:09.5016264Z       ],
2026-06-21T07:19:09.5016468Z       "stages": {
2026-06-21T07:19:09.5016673Z         "doc": {
2026-06-21T07:19:09.5016896Z           "complete": false,
2026-06-21T07:19:09.5017144Z           "evidence": []
2026-06-21T07:19:09.5017374Z         },
2026-06-21T07:19:09.5017575Z         "impl": {
2026-06-21T07:19:09.5017783Z           "complete": true,
2026-06-21T07:19:09.5018022Z           "evidence": [
2026-06-21T07:19:09.5018242Z             {
2026-06-21T07:19:09.5018500Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T07:19:09.5018793Z               "line": 34
2026-06-21T07:19:09.5019144Z             },
2026-06-21T07:19:09.5019358Z             {
2026-06-21T07:19:09.5019617Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T07:19:09.5019907Z               "line": 41
2026-06-21T07:19:09.5020127Z             }
2026-06-21T07:19:09.5020326Z           ]
2026-06-21T07:19:09.5020522Z         },
2026-06-21T07:19:09.5020708Z         "int": {
2026-06-21T07:19:09.5020932Z           "complete": false,
2026-06-21T07:19:09.5021176Z           "evidence": []
2026-06-21T07:19:09.5021401Z         },
2026-06-21T07:19:09.5021603Z         "unit": {
2026-06-21T07:19:09.5021814Z           "complete": true,
2026-06-21T07:19:09.5022290Z           "evidence": [
2026-06-21T07:19:09.5022515Z             {
2026-06-21T07:19:09.5022762Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T07:19:09.5023054Z               "line": 51
2026-06-21T07:19:09.5023267Z             },
2026-06-21T07:19:09.5023472Z             {
2026-06-21T07:19:09.5023824Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T07:19:09.5024113Z               "line": 71
2026-06-21T07:19:09.5024337Z             },
2026-06-21T07:19:09.5024546Z             {
2026-06-21T07:19:09.5024785Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T07:19:09.5025076Z               "line": 83
2026-06-21T07:19:09.5025296Z             }
2026-06-21T07:19:09.5025500Z           ]
2026-06-21T07:19:09.5025691Z         }
2026-06-21T07:19:09.5025883Z       }
2026-06-21T07:19:09.5026077Z     },
2026-06-21T07:19:09.5026273Z     {
2026-06-21T07:19:09.5026484Z       "id": "REQ-ARCH-4",
2026-06-21T07:19:09.5026820Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T07:19:09.5027185Z       "requiredStages": [
2026-06-21T07:19:09.5027413Z         "impl",
2026-06-21T07:19:09.5027638Z         "unit"
2026-06-21T07:19:09.5027843Z       ],
2026-06-21T07:19:09.5028052Z       "stages": {
2026-06-21T07:19:09.5028272Z         "doc": {
2026-06-21T07:19:09.5028497Z           "complete": false,
2026-06-21T07:19:09.5028745Z           "evidence": []
2026-06-21T07:19:09.5029103Z         },
2026-06-21T07:19:09.5029310Z         "impl": {
2026-06-21T07:19:09.5029528Z           "complete": true,
2026-06-21T07:19:09.5029776Z           "evidence": [
2026-06-21T07:19:09.5029985Z             {
2026-06-21T07:19:09.5030224Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5030510Z               "line": 165
2026-06-21T07:19:09.5030735Z             },
2026-06-21T07:19:09.5030929Z             {
2026-06-21T07:19:09.5031173Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5031468Z               "line": 188
2026-06-21T07:19:09.5031694Z             },
2026-06-21T07:19:09.5031893Z             {
2026-06-21T07:19:09.5032139Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5032426Z               "line": 208
2026-06-21T07:19:09.5032656Z             },
2026-06-21T07:19:09.5032864Z             {
2026-06-21T07:19:09.5033103Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5033389Z               "line": 223
2026-06-21T07:19:09.5033614Z             },
2026-06-21T07:19:09.5033823Z             {
2026-06-21T07:19:09.5034066Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5034351Z               "line": 273
2026-06-21T07:19:09.5034575Z             }
2026-06-21T07:19:09.5034773Z           ]
2026-06-21T07:19:09.5034974Z         },
2026-06-21T07:19:09.5035174Z         "int": {
2026-06-21T07:19:09.5035397Z           "complete": false,
2026-06-21T07:19:09.5035655Z           "evidence": []
2026-06-21T07:19:09.5035875Z         },
2026-06-21T07:19:09.5036084Z         "unit": {
2026-06-21T07:19:09.5036313Z           "complete": true,
2026-06-21T07:19:09.5036575Z           "evidence": [
2026-06-21T07:19:09.5036796Z             {
2026-06-21T07:19:09.5037044Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5037337Z               "line": 334
2026-06-21T07:19:09.5037569Z             },
2026-06-21T07:19:09.5037769Z             {
2026-06-21T07:19:09.5038012Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5038297Z               "line": 344
2026-06-21T07:19:09.5038522Z             },
2026-06-21T07:19:09.5038724Z             {
2026-06-21T07:19:09.5039057Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5039339Z               "line": 355
2026-06-21T07:19:09.5039562Z             },
2026-06-21T07:19:09.5039762Z             {
2026-06-21T07:19:09.5040000Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5040278Z               "line": 366
2026-06-21T07:19:09.5040608Z             },
2026-06-21T07:19:09.5040803Z             {
2026-06-21T07:19:09.5041056Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5041342Z               "line": 378
2026-06-21T07:19:09.5041557Z             },
2026-06-21T07:19:09.5041766Z             {
2026-06-21T07:19:09.5042128Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5042405Z               "line": 391
2026-06-21T07:19:09.5042629Z             },
2026-06-21T07:19:09.5042833Z             {
2026-06-21T07:19:09.5043061Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5043339Z               "line": 402
2026-06-21T07:19:09.5043563Z             },
2026-06-21T07:19:09.5043763Z             {
2026-06-21T07:19:09.5044006Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5044283Z               "line": 419
2026-06-21T07:19:09.5044508Z             },
2026-06-21T07:19:09.5044712Z             {
2026-06-21T07:19:09.5044954Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.5045252Z               "line": 547
2026-06-21T07:19:09.5045477Z             }
2026-06-21T07:19:09.5045681Z           ]
2026-06-21T07:19:09.5045877Z         }
2026-06-21T07:19:09.5046073Z       }
2026-06-21T07:19:09.5046272Z     },
2026-06-21T07:19:09.5046454Z     {
2026-06-21T07:19:09.5103625Z       "id": "REQ-CLI-1",
2026-06-21T07:19:09.5105179Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T07:19:09.5106446Z       "requiredStages": [
2026-06-21T07:19:09.5106686Z         "impl",
2026-06-21T07:19:09.5106906Z         "unit"
2026-06-21T07:19:09.5107109Z       ],
2026-06-21T07:19:09.5107357Z       "stages": {
2026-06-21T07:19:09.5107577Z         "doc": {
2026-06-21T07:19:09.5107797Z           "complete": false,
2026-06-21T07:19:09.5108054Z           "evidence": []
2026-06-21T07:19:09.5108277Z         },
2026-06-21T07:19:09.5108482Z         "impl": {
2026-06-21T07:19:09.5108712Z           "complete": true,
2026-06-21T07:19:09.5109037Z           "evidence": [
2026-06-21T07:19:09.5109371Z             {
2026-06-21T07:19:09.5109623Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5109905Z               "line": 225
2026-06-21T07:19:09.5110129Z             },
2026-06-21T07:19:09.5110335Z             {
2026-06-21T07:19:09.5110563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5110839Z               "line": 1093
2026-06-21T07:19:09.5111065Z             },
2026-06-21T07:19:09.5111267Z             {
2026-06-21T07:19:09.5111504Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5111757Z               "line": 1720
2026-06-21T07:19:09.5111991Z             },
2026-06-21T07:19:09.5112186Z             {
2026-06-21T07:19:09.5112420Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5112691Z               "line": 3124
2026-06-21T07:19:09.5112901Z             }
2026-06-21T07:19:09.5113101Z           ]
2026-06-21T07:19:09.5113312Z         },
2026-06-21T07:19:09.5113512Z         "int": {
2026-06-21T07:19:09.5113730Z           "complete": false,
2026-06-21T07:19:09.5113972Z           "evidence": []
2026-06-21T07:19:09.5114195Z         },
2026-06-21T07:19:09.5114395Z         "unit": {
2026-06-21T07:19:09.5114610Z           "complete": true,
2026-06-21T07:19:09.5114834Z           "evidence": [
2026-06-21T07:19:09.5115058Z             {
2026-06-21T07:19:09.5115282Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5115545Z               "line": 7947
2026-06-21T07:19:09.5115778Z             }
2026-06-21T07:19:09.5115978Z           ]
2026-06-21T07:19:09.5116175Z         }
2026-06-21T07:19:09.5116364Z       }
2026-06-21T07:19:09.5116850Z     },
2026-06-21T07:19:09.5117045Z     {
2026-06-21T07:19:09.5117246Z       "id": "REQ-CLI-2",
2026-06-21T07:19:09.5118161Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T07:19:09.5119292Z       "requiredStages": [
2026-06-21T07:19:09.5119525Z         "impl",
2026-06-21T07:19:09.5119727Z         "unit"
2026-06-21T07:19:09.5119921Z       ],
2026-06-21T07:19:09.5120118Z       "stages": {
2026-06-21T07:19:09.5120328Z         "doc": {
2026-06-21T07:19:09.5120555Z           "complete": false,
2026-06-21T07:19:09.5120803Z           "evidence": []
2026-06-21T07:19:09.5121019Z         },
2026-06-21T07:19:09.5121225Z         "impl": {
2026-06-21T07:19:09.5121443Z           "complete": true,
2026-06-21T07:19:09.5121672Z           "evidence": [
2026-06-21T07:19:09.5121899Z             {
2026-06-21T07:19:09.5122140Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5122426Z               "line": 414
2026-06-21T07:19:09.5122651Z             },
2026-06-21T07:19:09.5122847Z             {
2026-06-21T07:19:09.5123098Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T07:19:09.5123399Z               "line": 97
2026-06-21T07:19:09.5123618Z             },
2026-06-21T07:19:09.5123820Z             {
2026-06-21T07:19:09.5124077Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.5124370Z               "line": 256
2026-06-21T07:19:09.5124597Z             },
2026-06-21T07:19:09.5124798Z             {
2026-06-21T07:19:09.5125031Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5125303Z               "line": 434
2026-06-21T07:19:09.5125523Z             },
2026-06-21T07:19:09.5125714Z             {
2026-06-21T07:19:09.5125942Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5126219Z               "line": 1174
2026-06-21T07:19:09.5126448Z             },
2026-06-21T07:19:09.5126649Z             {
2026-06-21T07:19:09.5126877Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5127148Z               "line": 1958
2026-06-21T07:19:09.5127367Z             },
2026-06-21T07:19:09.5127566Z             {
2026-06-21T07:19:09.5127787Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5128059Z               "line": 2047
2026-06-21T07:19:09.5128283Z             },
2026-06-21T07:19:09.5128487Z             {
2026-06-21T07:19:09.5128707Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5129059Z               "line": 2108
2026-06-21T07:19:09.5129294Z             }
2026-06-21T07:19:09.5129497Z           ]
2026-06-21T07:19:09.5129696Z         },
2026-06-21T07:19:09.5129891Z         "int": {
2026-06-21T07:19:09.5130119Z           "complete": false,
2026-06-21T07:19:09.5130368Z           "evidence": []
2026-06-21T07:19:09.5130592Z         },
2026-06-21T07:19:09.5130796Z         "unit": {
2026-06-21T07:19:09.5131011Z           "complete": true,
2026-06-21T07:19:09.5131255Z           "evidence": [
2026-06-21T07:19:09.5131475Z             {
2026-06-21T07:19:09.5131726Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.5132022Z               "line": 338
2026-06-21T07:19:09.5132246Z             },
2026-06-21T07:19:09.5132455Z             {
2026-06-21T07:19:09.5132686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5132953Z               "line": 8102
2026-06-21T07:19:09.5133177Z             }
2026-06-21T07:19:09.5133368Z           ]
2026-06-21T07:19:09.5133564Z         }
2026-06-21T07:19:09.5133760Z       }
2026-06-21T07:19:09.5133954Z     },
2026-06-21T07:19:09.5134136Z     {
2026-06-21T07:19:09.5134351Z       "id": "REQ-CLI-3",
2026-06-21T07:19:09.5135266Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T07:19:09.5136289Z       "requiredStages": [
2026-06-21T07:19:09.5136521Z         "impl",
2026-06-21T07:19:09.5136731Z         "unit"
2026-06-21T07:19:09.5137022Z       ],
2026-06-21T07:19:09.5137228Z       "stages": {
2026-06-21T07:19:09.5137446Z         "doc": {
2026-06-21T07:19:09.5137661Z           "complete": false,
2026-06-21T07:19:09.5137894Z           "evidence": []
2026-06-21T07:19:09.5138112Z         },
2026-06-21T07:19:09.5138318Z         "impl": {
2026-06-21T07:19:09.5138529Z           "complete": true,
2026-06-21T07:19:09.5138761Z           "evidence": [
2026-06-21T07:19:09.5139090Z             {
2026-06-21T07:19:09.5139339Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5139610Z               "line": 1087
2026-06-21T07:19:09.5139831Z             }
2026-06-21T07:19:09.5140024Z           ]
2026-06-21T07:19:09.5140214Z         },
2026-06-21T07:19:09.5140412Z         "int": {
2026-06-21T07:19:09.5140623Z           "complete": false,
2026-06-21T07:19:09.5140866Z           "evidence": []
2026-06-21T07:19:09.5141086Z         },
2026-06-21T07:19:09.5141285Z         "unit": {
2026-06-21T07:19:09.5141496Z           "complete": true,
2026-06-21T07:19:09.5141730Z           "evidence": [
2026-06-21T07:19:09.5141947Z             {
2026-06-21T07:19:09.5142181Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5142449Z               "line": 7912
2026-06-21T07:19:09.5142674Z             }
2026-06-21T07:19:09.5142877Z           ]
2026-06-21T07:19:09.5143067Z         }
2026-06-21T07:19:09.5143270Z       }
2026-06-21T07:19:09.5143462Z     },
2026-06-21T07:19:09.5143647Z     {
2026-06-21T07:19:09.5143851Z       "id": "REQ-CLI-4",
2026-06-21T07:19:09.5146343Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T07:19:09.5148348Z       "requiredStages": [],
2026-06-21T07:19:09.5148587Z       "stages": {
2026-06-21T07:19:09.5148793Z         "doc": {
2026-06-21T07:19:09.5149122Z           "complete": false,
2026-06-21T07:19:09.5149365Z           "evidence": []
2026-06-21T07:19:09.5149593Z         },
2026-06-21T07:19:09.5149789Z         "impl": {
2026-06-21T07:19:09.5150014Z           "complete": true,
2026-06-21T07:19:09.5150251Z           "evidence": [
2026-06-21T07:19:09.5150589Z             {
2026-06-21T07:19:09.5150934Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5151273Z               "line": 5678
2026-06-21T07:19:09.5151736Z             }
2026-06-21T07:19:09.5152027Z           ]
2026-06-21T07:19:09.5152356Z         },
2026-06-21T07:19:09.5152666Z         "int": {
2026-06-21T07:19:09.5152957Z           "complete": false,
2026-06-21T07:19:09.5153338Z           "evidence": []
2026-06-21T07:19:09.5153637Z         },
2026-06-21T07:19:09.5153951Z         "unit": {
2026-06-21T07:19:09.5154317Z           "complete": false,
2026-06-21T07:19:09.5154627Z           "evidence": []
2026-06-21T07:19:09.5154999Z         }
2026-06-21T07:19:09.5155271Z       }
2026-06-21T07:19:09.5155572Z     },
2026-06-21T07:19:09.5155877Z     {
2026-06-21T07:19:09.5156180Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T07:19:09.5159710Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T07:19:09.5163155Z       "requiredStages": [
2026-06-21T07:19:09.5163484Z         "impl",
2026-06-21T07:19:09.5163794Z         "unit"
2026-06-21T07:19:09.5164111Z       ],
2026-06-21T07:19:09.5164404Z       "stages": {
2026-06-21T07:19:09.5164681Z         "doc": {
2026-06-21T07:19:09.5165068Z           "complete": false,
2026-06-21T07:19:09.5165392Z           "evidence": []
2026-06-21T07:19:09.5165731Z         },
2026-06-21T07:19:09.5166042Z         "impl": {
2026-06-21T07:19:09.5166332Z           "complete": true,
2026-06-21T07:19:09.5166706Z           "evidence": [
2026-06-21T07:19:09.5167024Z             {
2026-06-21T07:19:09.5167378Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5167807Z               "line": 8
2026-06-21T07:19:09.5168096Z             },
2026-06-21T07:19:09.5168455Z             {
2026-06-21T07:19:09.5168779Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5169281Z               "line": 51
2026-06-21T07:19:09.5169622Z             },
2026-06-21T07:19:09.5169908Z             {
2026-06-21T07:19:09.5170304Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5170666Z               "line": 82
2026-06-21T07:19:09.5170995Z             },
2026-06-21T07:19:09.5171304Z             {
2026-06-21T07:19:09.5171624Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5172040Z               "line": 229
2026-06-21T07:19:09.5172350Z             }
2026-06-21T07:19:09.5172617Z           ]
2026-06-21T07:19:09.5173008Z         },
2026-06-21T07:19:09.5173289Z         "int": {
2026-06-21T07:19:09.5173638Z           "complete": false,
2026-06-21T07:19:09.5173962Z           "evidence": []
2026-06-21T07:19:09.5174263Z         },
2026-06-21T07:19:09.5174585Z         "unit": {
2026-06-21T07:19:09.5174893Z           "complete": true,
2026-06-21T07:19:09.5175245Z           "evidence": [
2026-06-21T07:19:09.5175589Z             {
2026-06-21T07:19:09.5175909Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5176320Z               "line": 249
2026-06-21T07:19:09.5176635Z             },
2026-06-21T07:19:09.5176936Z             {
2026-06-21T07:19:09.5177272Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5177647Z               "line": 256
2026-06-21T07:19:09.5178014Z             },
2026-06-21T07:19:09.5178304Z             {
2026-06-21T07:19:09.5178643Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5179120Z               "line": 263
2026-06-21T07:19:09.5179430Z             },
2026-06-21T07:19:09.5179745Z             {
2026-06-21T07:19:09.5180067Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5180415Z               "line": 270
2026-06-21T07:19:09.5180822Z             },
2026-06-21T07:19:09.5181103Z             {
2026-06-21T07:19:09.5181447Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5181822Z               "line": 297
2026-06-21T07:19:09.5182114Z             },
2026-06-21T07:19:09.5182450Z             {
2026-06-21T07:19:09.5182759Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5183196Z               "line": 307
2026-06-21T07:19:09.5183626Z             },
2026-06-21T07:19:09.5183907Z             {
2026-06-21T07:19:09.5184290Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5184657Z               "line": 317
2026-06-21T07:19:09.5184990Z             },
2026-06-21T07:19:09.5185289Z             {
2026-06-21T07:19:09.5185725Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5186159Z               "line": 331
2026-06-21T07:19:09.5186474Z             },
2026-06-21T07:19:09.5186784Z             {
2026-06-21T07:19:09.5187103Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5187486Z               "line": 340
2026-06-21T07:19:09.5187823Z             },
2026-06-21T07:19:09.5188111Z             {
2026-06-21T07:19:09.5188416Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5188860Z               "line": 348
2026-06-21T07:19:09.5189260Z             }
2026-06-21T07:19:09.5189594Z           ]
2026-06-21T07:19:09.5189884Z         }
2026-06-21T07:19:09.5190152Z       }
2026-06-21T07:19:09.5190485Z     },
2026-06-21T07:19:09.5190752Z     {
2026-06-21T07:19:09.5191072Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T07:19:09.5199997Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T07:19:09.5204427Z       "requiredStages": [
2026-06-21T07:19:09.5204757Z         "impl",
2026-06-21T07:19:09.5205081Z         "unit"
2026-06-21T07:19:09.5205424Z       ],
2026-06-21T07:19:09.5205691Z       "stages": {
2026-06-21T07:19:09.5206049Z         "doc": {
2026-06-21T07:19:09.5206361Z           "complete": false,
2026-06-21T07:19:09.5206732Z           "evidence": []
2026-06-21T07:19:09.5207070Z         },
2026-06-21T07:19:09.5207352Z         "impl": {
2026-06-21T07:19:09.5207709Z           "complete": true,
2026-06-21T07:19:09.5208066Z           "evidence": [
2026-06-21T07:19:09.5208409Z             {
2026-06-21T07:19:09.5208752Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5209245Z               "line": 141
2026-06-21T07:19:09.5209608Z             },
2026-06-21T07:19:09.5209895Z             {
2026-06-21T07:19:09.5210219Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5210647Z               "line": 1376
2026-06-21T07:19:09.5210981Z             },
2026-06-21T07:19:09.5211305Z             {
2026-06-21T07:19:09.5211615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5211972Z               "line": 2145
2026-06-21T07:19:09.5212329Z             },
2026-06-21T07:19:09.5212620Z             {
2026-06-21T07:19:09.5212949Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5213536Z               "line": 4368
2026-06-21T07:19:09.5213827Z             },
2026-06-21T07:19:09.5214172Z             {
2026-06-21T07:19:09.5214501Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5214877Z               "line": 4466
2026-06-21T07:19:09.5215210Z             },
2026-06-21T07:19:09.5215606Z             {
2026-06-21T07:19:09.5215970Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5216366Z               "line": 5257
2026-06-21T07:19:09.5216685Z             },
2026-06-21T07:19:09.5216998Z             {
2026-06-21T07:19:09.5217320Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5217744Z               "line": 39
2026-06-21T07:19:09.5218040Z             }
2026-06-21T07:19:09.5218298Z           ]
2026-06-21T07:19:09.5218664Z         },
2026-06-21T07:19:09.5219022Z         "int": {
2026-06-21T07:19:09.5219416Z           "complete": false,
2026-06-21T07:19:09.5219743Z           "evidence": []
2026-06-21T07:19:09.5220048Z         },
2026-06-21T07:19:09.5220377Z         "unit": {
2026-06-21T07:19:09.5220687Z           "complete": true,
2026-06-21T07:19:09.5221050Z           "evidence": [
2026-06-21T07:19:09.5221399Z             {
2026-06-21T07:19:09.5221704Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5222105Z               "line": 10272
2026-06-21T07:19:09.5222428Z             },
2026-06-21T07:19:09.5222738Z             {
2026-06-21T07:19:09.5223057Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5223434Z               "line": 281
2026-06-21T07:19:09.5223777Z             },
2026-06-21T07:19:09.5224096Z             {
2026-06-21T07:19:09.5232777Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5233159Z               "line": 358
2026-06-21T07:19:09.5233402Z             },
2026-06-21T07:19:09.5233617Z             {
2026-06-21T07:19:09.5233860Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5234150Z               "line": 381
2026-06-21T07:19:09.5234384Z             },
2026-06-21T07:19:09.5234594Z             {
2026-06-21T07:19:09.5234828Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T07:19:09.5235117Z               "line": 395
2026-06-21T07:19:09.5235340Z             }
2026-06-21T07:19:09.5235545Z           ]
2026-06-21T07:19:09.5235744Z         }
2026-06-21T07:19:09.5235936Z       }
2026-06-21T07:19:09.5236127Z     },
2026-06-21T07:19:09.5236321Z     {
2026-06-21T07:19:09.5236537Z       "id": "REQ-CONSENT-1",
2026-06-21T07:19:09.5237652Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T07:19:09.5238775Z       "requiredStages": [
2026-06-21T07:19:09.5239070Z         "impl",
2026-06-21T07:19:09.5239284Z         "unit"
2026-06-21T07:19:09.5239485Z       ],
2026-06-21T07:19:09.5239690Z       "stages": {
2026-06-21T07:19:09.5239894Z         "doc": {
2026-06-21T07:19:09.5240118Z           "complete": false,
2026-06-21T07:19:09.5240368Z           "evidence": []
2026-06-21T07:19:09.5240594Z         },
2026-06-21T07:19:09.5240802Z         "impl": {
2026-06-21T07:19:09.5241022Z           "complete": true,
2026-06-21T07:19:09.5241260Z           "evidence": [
2026-06-21T07:19:09.5241483Z             {
2026-06-21T07:19:09.5241737Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5242022Z               "line": 27
2026-06-21T07:19:09.5242248Z             },
2026-06-21T07:19:09.5242447Z             {
2026-06-21T07:19:09.5242690Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5242976Z               "line": 75
2026-06-21T07:19:09.5243187Z             },
2026-06-21T07:19:09.5243381Z             {
2026-06-21T07:19:09.5243633Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5244066Z               "line": 98
2026-06-21T07:19:09.5244286Z             },
2026-06-21T07:19:09.5244488Z             {
2026-06-21T07:19:09.5244730Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5245021Z               "line": 82
2026-06-21T07:19:09.5245235Z             },
2026-06-21T07:19:09.5245535Z             {
2026-06-21T07:19:09.5245769Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5246047Z               "line": 109
2026-06-21T07:19:09.5246271Z             },
2026-06-21T07:19:09.5246467Z             {
2026-06-21T07:19:09.5246707Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5246987Z               "line": 127
2026-06-21T07:19:09.5247206Z             },
2026-06-21T07:19:09.5247402Z             {
2026-06-21T07:19:09.5247626Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5247912Z               "line": 142
2026-06-21T07:19:09.5248121Z             },
2026-06-21T07:19:09.5248314Z             {
2026-06-21T07:19:09.5248540Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5248819Z               "line": 7048
2026-06-21T07:19:09.5249110Z             }
2026-06-21T07:19:09.5249316Z           ]
2026-06-21T07:19:09.5249505Z         },
2026-06-21T07:19:09.5249697Z         "int": {
2026-06-21T07:19:09.5249921Z           "complete": false,
2026-06-21T07:19:09.5250159Z           "evidence": []
2026-06-21T07:19:09.5250373Z         },
2026-06-21T07:19:09.5250570Z         "unit": {
2026-06-21T07:19:09.5250799Z           "complete": true,
2026-06-21T07:19:09.5251035Z           "evidence": [
2026-06-21T07:19:09.5251245Z             {
2026-06-21T07:19:09.5251486Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5251772Z               "line": 334
2026-06-21T07:19:09.5251996Z             },
2026-06-21T07:19:09.5252192Z             {
2026-06-21T07:19:09.5252436Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5252712Z               "line": 380
2026-06-21T07:19:09.5252931Z             },
2026-06-21T07:19:09.5253122Z             {
2026-06-21T07:19:09.5253365Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5253641Z               "line": 391
2026-06-21T07:19:09.5253865Z             },
2026-06-21T07:19:09.5254065Z             {
2026-06-21T07:19:09.5254303Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5254584Z               "line": 165
2026-06-21T07:19:09.5254799Z             },
2026-06-21T07:19:09.5255000Z             {
2026-06-21T07:19:09.5255252Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5255533Z               "line": 184
2026-06-21T07:19:09.5255752Z             },
2026-06-21T07:19:09.5255949Z             {
2026-06-21T07:19:09.5256181Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T07:19:09.5256460Z               "line": 204
2026-06-21T07:19:09.5256689Z             },
2026-06-21T07:19:09.5256908Z             {
2026-06-21T07:19:09.5257165Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5257441Z               "line": 8334
2026-06-21T07:19:09.5257652Z             }
2026-06-21T07:19:09.5257842Z           ]
2026-06-21T07:19:09.5258029Z         }
2026-06-21T07:19:09.5258220Z       }
2026-06-21T07:19:09.5258410Z     },
2026-06-21T07:19:09.5258606Z     {
2026-06-21T07:19:09.5258812Z       "id": "REQ-CONSENT-2",
2026-06-21T07:19:09.5259919Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T07:19:09.5260919Z       "requiredStages": [
2026-06-21T07:19:09.5261139Z         "impl",
2026-06-21T07:19:09.5261349Z         "unit"
2026-06-21T07:19:09.5261534Z       ],
2026-06-21T07:19:09.5261739Z       "stages": {
2026-06-21T07:19:09.5262046Z         "doc": {
2026-06-21T07:19:09.5262274Z           "complete": false,
2026-06-21T07:19:09.5262509Z           "evidence": []
2026-06-21T07:19:09.5262733Z         },
2026-06-21T07:19:09.5262937Z         "impl": {
2026-06-21T07:19:09.5263157Z           "complete": true,
2026-06-21T07:19:09.5263396Z           "evidence": [
2026-06-21T07:19:09.5263730Z             {
2026-06-21T07:19:09.5263974Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5264265Z               "line": 140
2026-06-21T07:19:09.5264481Z             },
2026-06-21T07:19:09.5264682Z             {
2026-06-21T07:19:09.5264916Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5265192Z               "line": 165
2026-06-21T07:19:09.5265412Z             },
2026-06-21T07:19:09.5265613Z             {
2026-06-21T07:19:09.5265855Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5266131Z               "line": 199
2026-06-21T07:19:09.5266350Z             },
2026-06-21T07:19:09.5266557Z             {
2026-06-21T07:19:09.5266802Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5267091Z               "line": 241
2026-06-21T07:19:09.5267302Z             },
2026-06-21T07:19:09.5267501Z             {
2026-06-21T07:19:09.5267744Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5268035Z               "line": 269
2026-06-21T07:19:09.5268255Z             },
2026-06-21T07:19:09.5268461Z             {
2026-06-21T07:19:09.5268703Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5269532Z               "line": 300
2026-06-21T07:19:09.5269770Z             },
2026-06-21T07:19:09.5269977Z             {
2026-06-21T07:19:09.5270201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5270474Z               "line": 6839
2026-06-21T07:19:09.5270699Z             },
2026-06-21T07:19:09.5270921Z             {
2026-06-21T07:19:09.5271136Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5271408Z               "line": 6897
2026-06-21T07:19:09.5271628Z             }
2026-06-21T07:19:09.5271827Z           ]
2026-06-21T07:19:09.5272019Z         },
2026-06-21T07:19:09.5272217Z         "int": {
2026-06-21T07:19:09.5272439Z           "complete": false,
2026-06-21T07:19:09.5272683Z           "evidence": []
2026-06-21T07:19:09.5272911Z         },
2026-06-21T07:19:09.5273111Z         "unit": {
2026-06-21T07:19:09.5273327Z           "complete": true,
2026-06-21T07:19:09.5273551Z           "evidence": [
2026-06-21T07:19:09.5273769Z             {
2026-06-21T07:19:09.5274018Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5274304Z               "line": 419
2026-06-21T07:19:09.5274524Z             },
2026-06-21T07:19:09.5274733Z             {
2026-06-21T07:19:09.5274971Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5275262Z               "line": 436
2026-06-21T07:19:09.5275481Z             },
2026-06-21T07:19:09.5275681Z             {
2026-06-21T07:19:09.5275924Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5276211Z               "line": 472
2026-06-21T07:19:09.5276430Z             },
2026-06-21T07:19:09.5276630Z             {
2026-06-21T07:19:09.5276873Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.5277164Z               "line": 516
2026-06-21T07:19:09.5277382Z             },
2026-06-21T07:19:09.5277580Z             {
2026-06-21T07:19:09.5277800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5278076Z               "line": 9614
2026-06-21T07:19:09.5278181Z             },
2026-06-21T07:19:09.5278285Z             {
2026-06-21T07:19:09.5278420Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5278529Z               "line": 9696
2026-06-21T07:19:09.5278633Z             }
2026-06-21T07:19:09.5278735Z           ]
2026-06-21T07:19:09.5278835Z         }
2026-06-21T07:19:09.5279030Z       }
2026-06-21T07:19:09.5279129Z     },
2026-06-21T07:19:09.5279340Z     {
2026-06-21T07:19:09.5279453Z       "id": "REQ-CONSENT-3",
2026-06-21T07:19:09.5281438Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T07:19:09.5281663Z       "requiredStages": [
2026-06-21T07:19:09.5281768Z         "doc",
2026-06-21T07:19:09.5281878Z         "impl",
2026-06-21T07:19:09.5281982Z         "unit",
2026-06-21T07:19:09.5282092Z         "int"
2026-06-21T07:19:09.5282198Z       ],
2026-06-21T07:19:09.5282302Z       "stages": {
2026-06-21T07:19:09.5282402Z         "doc": {
2026-06-21T07:19:09.5282517Z           "complete": true,
2026-06-21T07:19:09.5282631Z           "evidence": [
2026-06-21T07:19:09.5282730Z             {
2026-06-21T07:19:09.5282849Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5282953Z               "line": 304
2026-06-21T07:19:09.5283061Z             }
2026-06-21T07:19:09.5283166Z           ]
2026-06-21T07:19:09.5283267Z         },
2026-06-21T07:19:09.5283376Z         "impl": {
2026-06-21T07:19:09.5283481Z           "complete": true,
2026-06-21T07:19:09.5283596Z           "evidence": [
2026-06-21T07:19:09.5283700Z             {
2026-06-21T07:19:09.5283853Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.5283958Z               "line": 123
2026-06-21T07:19:09.5284053Z             },
2026-06-21T07:19:09.5284159Z             {
2026-06-21T07:19:09.5284311Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.5284425Z               "line": 162
2026-06-21T07:19:09.5284540Z             },
2026-06-21T07:19:09.5284630Z             {
2026-06-21T07:19:09.5284779Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.5284888Z               "line": 291
2026-06-21T07:19:09.5284993Z             },
2026-06-21T07:19:09.5285094Z             {
2026-06-21T07:19:09.5285250Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5285361Z               "line": 574
2026-06-21T07:19:09.5285461Z             },
2026-06-21T07:19:09.5285593Z             {
2026-06-21T07:19:09.5285741Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5285846Z               "line": 824
2026-06-21T07:19:09.5285954Z             },
2026-06-21T07:19:09.5286060Z             {
2026-06-21T07:19:09.5286198Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5286307Z               "line": 6965
2026-06-21T07:19:09.5286408Z             }
2026-06-21T07:19:09.5286504Z           ]
2026-06-21T07:19:09.5286617Z         },
2026-06-21T07:19:09.5286718Z         "int": {
2026-06-21T07:19:09.5286837Z           "complete": true,
2026-06-21T07:19:09.5286956Z           "evidence": [
2026-06-21T07:19:09.5287062Z             {
2026-06-21T07:19:09.5287214Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T07:19:09.5287325Z               "line": 16
2026-06-21T07:19:09.5287429Z             }
2026-06-21T07:19:09.5287528Z           ]
2026-06-21T07:19:09.5287629Z         },
2026-06-21T07:19:09.5287739Z         "unit": {
2026-06-21T07:19:09.5287847Z           "complete": true,
2026-06-21T07:19:09.5287956Z           "evidence": [
2026-06-21T07:19:09.5288061Z             {
2026-06-21T07:19:09.5288211Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.5288321Z               "line": 1019
2026-06-21T07:19:09.5288431Z             },
2026-06-21T07:19:09.5288531Z             {
2026-06-21T07:19:09.5288666Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.5288860Z               "line": 1066
2026-06-21T07:19:09.5289027Z             },
2026-06-21T07:19:09.5289122Z             {
2026-06-21T07:19:09.5289266Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5289404Z               "line": 1394
2026-06-21T07:19:09.5289504Z             }
2026-06-21T07:19:09.5289694Z           ]
2026-06-21T07:19:09.5289799Z         }
2026-06-21T07:19:09.5289910Z       }
2026-06-21T07:19:09.5290014Z     },
2026-06-21T07:19:09.5290109Z     {
2026-06-21T07:19:09.5290215Z       "id": "REQ-CONV-1",
2026-06-21T07:19:09.5291703Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T07:19:09.5291809Z       "requiredStages": [
2026-06-21T07:19:09.5291918Z         "impl",
2026-06-21T07:19:09.5292032Z         "unit"
2026-06-21T07:19:09.5292128Z       ],
2026-06-21T07:19:09.5292232Z       "stages": {
2026-06-21T07:19:09.5292332Z         "doc": {
2026-06-21T07:19:09.5292458Z           "complete": false,
2026-06-21T07:19:09.5292566Z           "evidence": []
2026-06-21T07:19:09.5292671Z         },
2026-06-21T07:19:09.5292777Z         "impl": {
2026-06-21T07:19:09.5292890Z           "complete": true,
2026-06-21T07:19:09.5293010Z           "evidence": [
2026-06-21T07:19:09.5293111Z             {
2026-06-21T07:19:09.5293266Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5293371Z               "line": 988
2026-06-21T07:19:09.5293481Z             },
2026-06-21T07:19:09.5293588Z             {
2026-06-21T07:19:09.5293731Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.5293846Z               "line": 94
2026-06-21T07:19:09.5293950Z             },
2026-06-21T07:19:09.5294056Z             {
2026-06-21T07:19:09.5294199Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.5294308Z               "line": 345
2026-06-21T07:19:09.5294414Z             },
2026-06-21T07:19:09.5294513Z             {
2026-06-21T07:19:09.5294662Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.5294766Z               "line": 387
2026-06-21T07:19:09.5294875Z             },
2026-06-21T07:19:09.5294981Z             {
2026-06-21T07:19:09.5295138Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.5295252Z               "line": 472
2026-06-21T07:19:09.5295354Z             },
2026-06-21T07:19:09.5295462Z             {
2026-06-21T07:19:09.5295601Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5295711Z               "line": 667
2026-06-21T07:19:09.5295820Z             },
2026-06-21T07:19:09.5295926Z             {
2026-06-21T07:19:09.5296082Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5296190Z               "line": 693
2026-06-21T07:19:09.5296301Z             },
2026-06-21T07:19:09.5296401Z             {
2026-06-21T07:19:09.5296558Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.5296668Z               "line": 369
2026-06-21T07:19:09.5296782Z             },
2026-06-21T07:19:09.5296892Z             {
2026-06-21T07:19:09.5297040Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T07:19:09.5297144Z               "line": 19
2026-06-21T07:19:09.5297245Z             }
2026-06-21T07:19:09.5297340Z           ]
2026-06-21T07:19:09.5297440Z         },
2026-06-21T07:19:09.5297540Z         "int": {
2026-06-21T07:19:09.5297655Z           "complete": false,
2026-06-21T07:19:09.5297764Z           "evidence": []
2026-06-21T07:19:09.5297870Z         },
2026-06-21T07:19:09.5297970Z         "unit": {
2026-06-21T07:19:09.5298084Z           "complete": true,
2026-06-21T07:19:09.5298280Z           "evidence": [
2026-06-21T07:19:09.5298383Z             {
2026-06-21T07:19:09.5298531Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5298639Z               "line": 1263
2026-06-21T07:19:09.5298738Z             },
2026-06-21T07:19:09.5298901Z             {
2026-06-21T07:19:09.5299120Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T07:19:09.5299221Z               "line": 108
2026-06-21T07:19:09.5299335Z             },
2026-06-21T07:19:09.5299439Z             {
2026-06-21T07:19:09.5299583Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T07:19:09.5299701Z               "line": 134
2026-06-21T07:19:09.5299803Z             },
2026-06-21T07:19:09.5299912Z             {
2026-06-21T07:19:09.5300054Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T07:19:09.5300160Z               "line": 144
2026-06-21T07:19:09.5300259Z             }
2026-06-21T07:19:09.5300345Z           ]
2026-06-21T07:19:09.5300456Z         }
2026-06-21T07:19:09.5300560Z       }
2026-06-21T07:19:09.5300664Z     },
2026-06-21T07:19:09.5300766Z     {
2026-06-21T07:19:09.5300879Z       "id": "REQ-CONV-2",
2026-06-21T07:19:09.5302059Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T07:19:09.5302183Z       "requiredStages": [
2026-06-21T07:19:09.5302287Z         "impl",
2026-06-21T07:19:09.5302388Z         "unit"
2026-06-21T07:19:09.5302498Z       ],
2026-06-21T07:19:09.5302597Z       "stages": {
2026-06-21T07:19:09.5302703Z         "doc": {
2026-06-21T07:19:09.5302821Z           "complete": false,
2026-06-21T07:19:09.5302936Z           "evidence": []
2026-06-21T07:19:09.5303037Z         },
2026-06-21T07:19:09.5303140Z         "impl": {
2026-06-21T07:19:09.5303255Z           "complete": true,
2026-06-21T07:19:09.5303371Z           "evidence": [
2026-06-21T07:19:09.5303464Z             {
2026-06-21T07:19:09.5303619Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5303733Z               "line": 409
2026-06-21T07:19:09.5303836Z             },
2026-06-21T07:19:09.5303931Z             {
2026-06-21T07:19:09.5304106Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.5304224Z               "line": 119
2026-06-21T07:19:09.5304330Z             },
2026-06-21T07:19:09.5304435Z             {
2026-06-21T07:19:09.5304587Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.5304697Z               "line": 841
2026-06-21T07:19:09.5304806Z             },
2026-06-21T07:19:09.5304912Z             {
2026-06-21T07:19:09.5305074Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.5305183Z               "line": 852
2026-06-21T07:19:09.5305294Z             },
2026-06-21T07:19:09.5305393Z             {
2026-06-21T07:19:09.5305546Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.5305660Z               "line": 334
2026-06-21T07:19:09.5305764Z             },
2026-06-21T07:19:09.5305875Z             {
2026-06-21T07:19:09.5306008Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5306123Z               "line": 3074
2026-06-21T07:19:09.5306224Z             },
2026-06-21T07:19:09.5306322Z             {
2026-06-21T07:19:09.5306452Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5306558Z               "line": 3090
2026-06-21T07:19:09.5306665Z             },
2026-06-21T07:19:09.5306764Z             {
2026-06-21T07:19:09.5306899Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5306994Z               "line": 3170
2026-06-21T07:19:09.5307103Z             }
2026-06-21T07:19:09.5307204Z           ]
2026-06-21T07:19:09.5307408Z         },
2026-06-21T07:19:09.5307515Z         "int": {
2026-06-21T07:19:09.5307633Z           "complete": false,
2026-06-21T07:19:09.5307757Z           "evidence": []
2026-06-21T07:19:09.5307853Z         },
2026-06-21T07:19:09.5307957Z         "unit": {
2026-06-21T07:19:09.5308071Z           "complete": true,
2026-06-21T07:19:09.5308291Z           "evidence": [
2026-06-21T07:19:09.5308401Z             {
2026-06-21T07:19:09.5308549Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5308663Z               "line": 889
2026-06-21T07:19:09.5308764Z             },
2026-06-21T07:19:09.5308872Z             {
2026-06-21T07:19:09.5309481Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5309594Z               "line": 1014
2026-06-21T07:19:09.5309703Z             },
2026-06-21T07:19:09.5309795Z             {
2026-06-21T07:19:09.5309965Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.5310067Z               "line": 215
2026-06-21T07:19:09.5310167Z             }
2026-06-21T07:19:09.5310275Z           ]
2026-06-21T07:19:09.5310377Z         }
2026-06-21T07:19:09.5310491Z       }
2026-06-21T07:19:09.5310586Z     },
2026-06-21T07:19:09.5310687Z     {
2026-06-21T07:19:09.5310791Z       "id": "REQ-DAEMON-1",
2026-06-21T07:19:09.5310997Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T07:19:09.5311120Z       "requiredStages": [
2026-06-21T07:19:09.5311225Z         "impl",
2026-06-21T07:19:09.5311326Z         "unit",
2026-06-21T07:19:09.5311430Z         "int"
2026-06-21T07:19:09.5311540Z       ],
2026-06-21T07:19:09.5311646Z       "stages": {
2026-06-21T07:19:09.5311750Z         "doc": {
2026-06-21T07:19:09.5311867Z           "complete": false,
2026-06-21T07:19:09.5311973Z           "evidence": []
2026-06-21T07:19:09.5312081Z         },
2026-06-21T07:19:09.5312184Z         "impl": {
2026-06-21T07:19:09.5312299Z           "complete": true,
2026-06-21T07:19:09.5312405Z           "evidence": [
2026-06-21T07:19:09.5312508Z             {
2026-06-21T07:19:09.5312677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5312781Z               "line": 229
2026-06-21T07:19:09.5312881Z             },
2026-06-21T07:19:09.5312987Z             {
2026-06-21T07:19:09.5313133Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5313234Z               "line": 12
2026-06-21T07:19:09.5313344Z             },
2026-06-21T07:19:09.5313448Z             {
2026-06-21T07:19:09.5313587Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5313691Z               "line": 16
2026-06-21T07:19:09.5313796Z             },
2026-06-21T07:19:09.5313897Z             {
2026-06-21T07:19:09.5314048Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5314164Z               "line": 309
2026-06-21T07:19:09.5314274Z             },
2026-06-21T07:19:09.5314368Z             {
2026-06-21T07:19:09.5314520Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5314634Z               "line": 24
2026-06-21T07:19:09.5314741Z             },
2026-06-21T07:19:09.5314847Z             {
2026-06-21T07:19:09.5315000Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5315104Z               "line": 262
2026-06-21T07:19:09.5315215Z             },
2026-06-21T07:19:09.5315319Z             {
2026-06-21T07:19:09.5315467Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5315581Z               "line": 279
2026-06-21T07:19:09.5315676Z             },
2026-06-21T07:19:09.5315782Z             {
2026-06-21T07:19:09.5315929Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5316039Z               "line": 356
2026-06-21T07:19:09.5316145Z             },
2026-06-21T07:19:09.5316248Z             {
2026-06-21T07:19:09.5316401Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5316521Z               "line": 670
2026-06-21T07:19:09.5316621Z             },
2026-06-21T07:19:09.5316846Z             {
2026-06-21T07:19:09.5316992Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T07:19:09.5317108Z               "line": 15
2026-06-21T07:19:09.5317211Z             },
2026-06-21T07:19:09.5317498Z             {
2026-06-21T07:19:09.5317707Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.5324990Z               "line": 241
2026-06-21T07:19:09.5325142Z             },
2026-06-21T07:19:09.5325250Z             {
2026-06-21T07:19:09.5325398Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T07:19:09.5325508Z               "line": 13
2026-06-21T07:19:09.5325611Z             },
2026-06-21T07:19:09.5325712Z             {
2026-06-21T07:19:09.5325856Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5325969Z               "line": 382
2026-06-21T07:19:09.5326075Z             },
2026-06-21T07:19:09.5326175Z             {
2026-06-21T07:19:09.5326332Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5326461Z               "line": 494
2026-06-21T07:19:09.5326561Z             }
2026-06-21T07:19:09.5326666Z           ]
2026-06-21T07:19:09.5326762Z         },
2026-06-21T07:19:09.5326871Z         "int": {
2026-06-21T07:19:09.5326981Z           "complete": true,
2026-06-21T07:19:09.5327095Z           "evidence": [
2026-06-21T07:19:09.5327200Z             {
2026-06-21T07:19:09.5327410Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T07:19:09.5327515Z               "line": 2
2026-06-21T07:19:09.5327616Z             },
2026-06-21T07:19:09.5327716Z             {
2026-06-21T07:19:09.5327904Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T07:19:09.5328010Z               "line": 16
2026-06-21T07:19:09.5328115Z             },
2026-06-21T07:19:09.5328219Z             {
2026-06-21T07:19:09.5328391Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T07:19:09.5328490Z               "line": 12
2026-06-21T07:19:09.5328601Z             },
2026-06-21T07:19:09.5328701Z             {
2026-06-21T07:19:09.5328863Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T07:19:09.5329049Z               "line": 12
2026-06-21T07:19:09.5329153Z             },
2026-06-21T07:19:09.5329255Z             {
2026-06-21T07:19:09.5329421Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T07:19:09.5329531Z               "line": 44
2026-06-21T07:19:09.5329622Z             }
2026-06-21T07:19:09.5329716Z           ]
2026-06-21T07:19:09.5329821Z         },
2026-06-21T07:19:09.5329928Z         "unit": {
2026-06-21T07:19:09.5330045Z           "complete": true,
2026-06-21T07:19:09.5330139Z           "evidence": [
2026-06-21T07:19:09.5330245Z             {
2026-06-21T07:19:09.5330385Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5330495Z               "line": 285
2026-06-21T07:19:09.5330596Z             },
2026-06-21T07:19:09.5330700Z             {
2026-06-21T07:19:09.5330853Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5330958Z               "line": 293
2026-06-21T07:19:09.5331053Z             },
2026-06-21T07:19:09.5331153Z             {
2026-06-21T07:19:09.5331301Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5331415Z               "line": 309
2026-06-21T07:19:09.5331517Z             },
2026-06-21T07:19:09.5331616Z             {
2026-06-21T07:19:09.5331758Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5331859Z               "line": 317
2026-06-21T07:19:09.5331964Z             },
2026-06-21T07:19:09.5332063Z             {
2026-06-21T07:19:09.5332216Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5332317Z               "line": 659
2026-06-21T07:19:09.5332418Z             },
2026-06-21T07:19:09.5332517Z             {
2026-06-21T07:19:09.5332670Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5332931Z               "line": 729
2026-06-21T07:19:09.5333030Z             },
2026-06-21T07:19:09.5333131Z             {
2026-06-21T07:19:09.5333281Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5333391Z               "line": 1211
2026-06-21T07:19:09.5333492Z             },
2026-06-21T07:19:09.5333681Z             {
2026-06-21T07:19:09.5333840Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5333944Z               "line": 1248
2026-06-21T07:19:09.5334040Z             },
2026-06-21T07:19:09.5334140Z             {
2026-06-21T07:19:09.5334287Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5334393Z               "line": 1271
2026-06-21T07:19:09.5334492Z             },
2026-06-21T07:19:09.5334597Z             {
2026-06-21T07:19:09.5334741Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5334849Z               "line": 1300
2026-06-21T07:19:09.5334955Z             },
2026-06-21T07:19:09.5335060Z             {
2026-06-21T07:19:09.5335198Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5335309Z               "line": 1348
2026-06-21T07:19:09.5335409Z             },
2026-06-21T07:19:09.5335502Z             {
2026-06-21T07:19:09.5335655Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5335763Z               "line": 1391
2026-06-21T07:19:09.5335866Z             },
2026-06-21T07:19:09.5335972Z             {
2026-06-21T07:19:09.5336115Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T07:19:09.5336229Z               "line": 106
2026-06-21T07:19:09.5336325Z             },
2026-06-21T07:19:09.5336426Z             {
2026-06-21T07:19:09.5336568Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T07:19:09.5336673Z               "line": 132
2026-06-21T07:19:09.5336769Z             },
2026-06-21T07:19:09.5336873Z             {
2026-06-21T07:19:09.5337002Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.5337116Z               "line": 530
2026-06-21T07:19:09.5337221Z             }
2026-06-21T07:19:09.5337308Z           ]
2026-06-21T07:19:09.5337412Z         }
2026-06-21T07:19:09.5337512Z       }
2026-06-21T07:19:09.5337613Z     },
2026-06-21T07:19:09.5337712Z     {
2026-06-21T07:19:09.5337832Z       "id": "REQ-DAEMON-2",
2026-06-21T07:19:09.5338008Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T07:19:09.5338112Z       "requiredStages": [
2026-06-21T07:19:09.5338224Z         "impl",
2026-06-21T07:19:09.5338327Z         "unit",
2026-06-21T07:19:09.5338436Z         "int"
2026-06-21T07:19:09.5338536Z       ],
2026-06-21T07:19:09.5338638Z       "stages": {
2026-06-21T07:19:09.5338736Z         "doc": {
2026-06-21T07:19:09.5338846Z           "complete": true,
2026-06-21T07:19:09.5339018Z           "evidence": [
2026-06-21T07:19:09.5339113Z             {
2026-06-21T07:19:09.5339275Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T07:19:09.5339384Z               "line": 250
2026-06-21T07:19:09.5339486Z             }
2026-06-21T07:19:09.5339595Z           ]
2026-06-21T07:19:09.5339689Z         },
2026-06-21T07:19:09.5339796Z         "impl": {
2026-06-21T07:19:09.5339900Z           "complete": true,
2026-06-21T07:19:09.5340014Z           "evidence": [
2026-06-21T07:19:09.5340120Z             {
2026-06-21T07:19:09.5340266Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5340377Z               "line": 23
2026-06-21T07:19:09.5340478Z             },
2026-06-21T07:19:09.5340576Z             {
2026-06-21T07:19:09.5340713Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5340819Z               "line": 844
2026-06-21T07:19:09.5340922Z             },
2026-06-21T07:19:09.5341021Z             {
2026-06-21T07:19:09.5341156Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5341260Z               "line": 869
2026-06-21T07:19:09.5341365Z             },
2026-06-21T07:19:09.5341461Z             {
2026-06-21T07:19:09.5341699Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5341813Z               "line": 1105
2026-06-21T07:19:09.5341913Z             },
2026-06-21T07:19:09.5342019Z             {
2026-06-21T07:19:09.5342162Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5342362Z               "line": 32
2026-06-21T07:19:09.5342462Z             },
2026-06-21T07:19:09.5342552Z             {
2026-06-21T07:19:09.5342701Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5342810Z               "line": 1150
2026-06-21T07:19:09.5342915Z             },
2026-06-21T07:19:09.5343016Z             {
2026-06-21T07:19:09.5343157Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5343273Z               "line": 1947
2026-06-21T07:19:09.5343369Z             },
2026-06-21T07:19:09.5343477Z             {
2026-06-21T07:19:09.5343615Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5343724Z               "line": 2234
2026-06-21T07:19:09.5343817Z             },
2026-06-21T07:19:09.5343922Z             {
2026-06-21T07:19:09.5344066Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T07:19:09.5344170Z               "line": 11
2026-06-21T07:19:09.5344270Z             },
2026-06-21T07:19:09.5344380Z             {
2026-06-21T07:19:09.5344523Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5344624Z               "line": 153
2026-06-21T07:19:09.5344719Z             },
2026-06-21T07:19:09.5344823Z             {
2026-06-21T07:19:09.5344953Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5345062Z               "line": 343
2026-06-21T07:19:09.5345162Z             },
2026-06-21T07:19:09.5345268Z             {
2026-06-21T07:19:09.5345405Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5345515Z               "line": 13
2026-06-21T07:19:09.5345616Z             },
2026-06-21T07:19:09.5345720Z             {
2026-06-21T07:19:09.5345859Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5345964Z               "line": 27
2026-06-21T07:19:09.5346072Z             },
2026-06-21T07:19:09.5346167Z             {
2026-06-21T07:19:09.5346309Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5346422Z               "line": 173
2026-06-21T07:19:09.5346518Z             },
2026-06-21T07:19:09.5346614Z             {
2026-06-21T07:19:09.5346741Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5346847Z               "line": 682
2026-06-21T07:19:09.5346947Z             },
2026-06-21T07:19:09.5347052Z             {
2026-06-21T07:19:09.5347195Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5347300Z               "line": 903
2026-06-21T07:19:09.5347404Z             },
2026-06-21T07:19:09.5347510Z             {
2026-06-21T07:19:09.5347658Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5347767Z               "line": 1050
2026-06-21T07:19:09.5347868Z             },
2026-06-21T07:19:09.5347972Z             {
2026-06-21T07:19:09.5348111Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5348211Z               "line": 1139
2026-06-21T07:19:09.5348311Z             },
2026-06-21T07:19:09.5348406Z             {
2026-06-21T07:19:09.5348540Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5348649Z               "line": 1261
2026-06-21T07:19:09.5348755Z             },
2026-06-21T07:19:09.5348855Z             {
2026-06-21T07:19:09.5349287Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T07:19:09.5349397Z               "line": 10
2026-06-21T07:19:09.5349497Z             }
2026-06-21T07:19:09.5349597Z           ]
2026-06-21T07:19:09.5349697Z         },
2026-06-21T07:19:09.5349803Z         "int": {
2026-06-21T07:19:09.5349912Z           "complete": true,
2026-06-21T07:19:09.5350012Z           "evidence": [
2026-06-21T07:19:09.5350236Z             {
2026-06-21T07:19:09.5350384Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.5350484Z               "line": 17
2026-06-21T07:19:09.5350588Z             },
2026-06-21T07:19:09.5350681Z             {
2026-06-21T07:19:09.5350822Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.5351019Z               "line": 90
2026-06-21T07:19:09.5351118Z             },
2026-06-21T07:19:09.5351222Z             {
2026-06-21T07:19:09.5351379Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.5351487Z               "line": 110
2026-06-21T07:19:09.5351591Z             },
2026-06-21T07:19:09.5351687Z             {
2026-06-21T07:19:09.5351834Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.5351944Z               "line": 186
2026-06-21T07:19:09.5352050Z             },
2026-06-21T07:19:09.5352149Z             {
2026-06-21T07:19:09.5352283Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.5352388Z               "line": 309
2026-06-21T07:19:09.5352487Z             },
2026-06-21T07:19:09.5352594Z             {
2026-06-21T07:19:09.5352741Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T07:19:09.5352850Z               "line": 128
2026-06-21T07:19:09.5352956Z             },
2026-06-21T07:19:09.5353060Z             {
2026-06-21T07:19:09.5353208Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T07:19:09.5353309Z               "line": 59
2026-06-21T07:19:09.5353413Z             }
2026-06-21T07:19:09.5353513Z           ]
2026-06-21T07:19:09.5353619Z         },
2026-06-21T07:19:09.5353717Z         "unit": {
2026-06-21T07:19:09.5353823Z           "complete": true,
2026-06-21T07:19:09.5353934Z           "evidence": [
2026-06-21T07:19:09.5354037Z             {
2026-06-21T07:19:09.5354185Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T07:19:09.5354284Z               "line": 62
2026-06-21T07:19:09.5354387Z             },
2026-06-21T07:19:09.5354492Z             {
2026-06-21T07:19:09.5354631Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T07:19:09.5354735Z               "line": 76
2026-06-21T07:19:09.5354835Z             },
2026-06-21T07:19:09.5354936Z             {
2026-06-21T07:19:09.5355069Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T07:19:09.5355165Z               "line": 88
2026-06-21T07:19:09.5355269Z             },
2026-06-21T07:19:09.5355374Z             {
2026-06-21T07:19:09.5355504Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.5355612Z               "line": 347
2026-06-21T07:19:09.5355713Z             },
2026-06-21T07:19:09.5355819Z             {
2026-06-21T07:19:09.5355951Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5356060Z               "line": 873
2026-06-21T07:19:09.5356162Z             },
2026-06-21T07:19:09.5356260Z             {
2026-06-21T07:19:09.5356395Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5356514Z               "line": 881
2026-06-21T07:19:09.5356618Z             },
2026-06-21T07:19:09.5356717Z             {
2026-06-21T07:19:09.5356850Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5356959Z               "line": 898
2026-06-21T07:19:09.5357068Z             },
2026-06-21T07:19:09.5357160Z             {
2026-06-21T07:19:09.5357297Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5357402Z               "line": 974
2026-06-21T07:19:09.5357507Z             },
2026-06-21T07:19:09.5357607Z             {
2026-06-21T07:19:09.5357746Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5357851Z               "line": 1370
2026-06-21T07:19:09.5357945Z             },
2026-06-21T07:19:09.5358047Z             {
2026-06-21T07:19:09.5358193Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5358293Z               "line": 1382
2026-06-21T07:19:09.5358466Z             },
2026-06-21T07:19:09.5358565Z             {
2026-06-21T07:19:09.5358710Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T07:19:09.5358813Z               "line": 110
2026-06-21T07:19:09.5358923Z             },
2026-06-21T07:19:09.5359109Z             {
2026-06-21T07:19:09.5359349Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T07:19:09.5359452Z               "line": 145
2026-06-21T07:19:09.5359556Z             }
2026-06-21T07:19:09.5359657Z           ]
2026-06-21T07:19:09.5359748Z         }
2026-06-21T07:19:09.5359856Z       }
2026-06-21T07:19:09.5359957Z     },
2026-06-21T07:19:09.5360058Z     {
2026-06-21T07:19:09.5360176Z       "id": "REQ-DAEMON-3",
2026-06-21T07:19:09.5360358Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T07:19:09.5360486Z       "requiredStages": [
2026-06-21T07:19:09.5360586Z         "impl",
2026-06-21T07:19:09.5360696Z         "unit",
2026-06-21T07:19:09.5360791Z         "int"
2026-06-21T07:19:09.5360896Z       ],
2026-06-21T07:19:09.5361002Z       "stages": {
2026-06-21T07:19:09.5361106Z         "doc": {
2026-06-21T07:19:09.5361226Z           "complete": false,
2026-06-21T07:19:09.5361336Z           "evidence": []
2026-06-21T07:19:09.5361440Z         },
2026-06-21T07:19:09.5361550Z         "impl": {
2026-06-21T07:19:09.5361660Z           "complete": true,
2026-06-21T07:19:09.5361772Z           "evidence": [
2026-06-21T07:19:09.5361868Z             {
2026-06-21T07:19:09.5362019Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5362123Z               "line": 14
2026-06-21T07:19:09.5362237Z             },
2026-06-21T07:19:09.5362339Z             {
2026-06-21T07:19:09.5362480Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T07:19:09.5362591Z               "line": 11
2026-06-21T07:19:09.5362686Z             },
2026-06-21T07:19:09.5362790Z             {
2026-06-21T07:19:09.5362920Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.5363034Z               "line": 305
2026-06-21T07:19:09.5363139Z             },
2026-06-21T07:19:09.5363239Z             {
2026-06-21T07:19:09.5363372Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5363473Z               "line": 1956
2026-06-21T07:19:09.5363582Z             },
2026-06-21T07:19:09.5363687Z             {
2026-06-21T07:19:09.5363821Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5363935Z               "line": 4235
2026-06-21T07:19:09.5364035Z             },
2026-06-21T07:19:09.5364136Z             {
2026-06-21T07:19:09.5364259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5364369Z               "line": 4256
2026-06-21T07:19:09.5364470Z             }
2026-06-21T07:19:09.5364574Z           ]
2026-06-21T07:19:09.5364673Z         },
2026-06-21T07:19:09.5364778Z         "int": {
2026-06-21T07:19:09.5364900Z           "complete": true,
2026-06-21T07:19:09.5365009Z           "evidence": [
2026-06-21T07:19:09.5365114Z             {
2026-06-21T07:19:09.5365262Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.5365366Z               "line": 49
2026-06-21T07:19:09.5365463Z             },
2026-06-21T07:19:09.5365567Z             {
2026-06-21T07:19:09.5365715Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.5365825Z               "line": 487
2026-06-21T07:19:09.5365929Z             }
2026-06-21T07:19:09.5366035Z           ]
2026-06-21T07:19:09.5366139Z         },
2026-06-21T07:19:09.5366253Z         "unit": {
2026-06-21T07:19:09.5366364Z           "complete": true,
2026-06-21T07:19:09.5366482Z           "evidence": [
2026-06-21T07:19:09.5366582Z             {
2026-06-21T07:19:09.5366722Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5366835Z               "line": 1553
2026-06-21T07:19:09.5366945Z             },
2026-06-21T07:19:09.5367052Z             {
2026-06-21T07:19:09.5367173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5367387Z               "line": 10715
2026-06-21T07:19:09.5367485Z             }
2026-06-21T07:19:09.5367580Z           ]
2026-06-21T07:19:09.5367681Z         }
2026-06-21T07:19:09.5367767Z       }
2026-06-21T07:19:09.5367871Z     },
2026-06-21T07:19:09.5367977Z     {
2026-06-21T07:19:09.5368101Z       "id": "REQ-DAEMON-4",
2026-06-21T07:19:09.5368396Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T07:19:09.5368515Z       "requiredStages": [
2026-06-21T07:19:09.5368616Z         "impl",
2026-06-21T07:19:09.5368725Z         "unit",
2026-06-21T07:19:09.5368830Z         "int"
2026-06-21T07:19:09.5368921Z       ],
2026-06-21T07:19:09.5369116Z       "stages": {
2026-06-21T07:19:09.5369222Z         "doc": {
2026-06-21T07:19:09.5369340Z           "complete": false,
2026-06-21T07:19:09.5369450Z           "evidence": []
2026-06-21T07:19:09.5369556Z         },
2026-06-21T07:19:09.5369660Z         "impl": {
2026-06-21T07:19:09.5369779Z           "complete": true,
2026-06-21T07:19:09.5369885Z           "evidence": [
2026-06-21T07:19:09.5369984Z             {
2026-06-21T07:19:09.5370130Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5370236Z               "line": 464
2026-06-21T07:19:09.5370332Z             },
2026-06-21T07:19:09.5370431Z             {
2026-06-21T07:19:09.5370565Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5370684Z               "line": 529
2026-06-21T07:19:09.5370783Z             },
2026-06-21T07:19:09.5370889Z             {
2026-06-21T07:19:09.5371032Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5371142Z               "line": 551
2026-06-21T07:19:09.5371256Z             }
2026-06-21T07:19:09.5371356Z           ]
2026-06-21T07:19:09.5371461Z         },
2026-06-21T07:19:09.5371567Z         "int": {
2026-06-21T07:19:09.5371690Z           "complete": true,
2026-06-21T07:19:09.5371796Z           "evidence": [
2026-06-21T07:19:09.5371900Z             {
2026-06-21T07:19:09.5372067Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T07:19:09.5372177Z               "line": 42
2026-06-21T07:19:09.5372286Z             }
2026-06-21T07:19:09.5372390Z           ]
2026-06-21T07:19:09.5372494Z         },
2026-06-21T07:19:09.5372598Z         "unit": {
2026-06-21T07:19:09.5372711Z           "complete": true,
2026-06-21T07:19:09.5372822Z           "evidence": [
2026-06-21T07:19:09.5372927Z             {
2026-06-21T07:19:09.5373069Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.5373175Z               "line": 428
2026-06-21T07:19:09.5373279Z             },
2026-06-21T07:19:09.5373379Z             {
2026-06-21T07:19:09.5373518Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5373622Z               "line": 957
2026-06-21T07:19:09.5373724Z             },
2026-06-21T07:19:09.5373819Z             {
2026-06-21T07:19:09.5373960Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5374076Z               "line": 1027
2026-06-21T07:19:09.5374185Z             },
2026-06-21T07:19:09.5374285Z             {
2026-06-21T07:19:09.5374434Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5374533Z               "line": 1057
2026-06-21T07:19:09.5374634Z             },
2026-06-21T07:19:09.5374734Z             {
2026-06-21T07:19:09.5374886Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5374997Z               "line": 1090
2026-06-21T07:19:09.5375101Z             }
2026-06-21T07:19:09.5375190Z           ]
2026-06-21T07:19:09.5375290Z         }
2026-06-21T07:19:09.5375395Z       }
2026-06-21T07:19:09.5375498Z     },
2026-06-21T07:19:09.5375597Z     {
2026-06-21T07:19:09.5375718Z       "id": "REQ-DAEMON-5",
2026-06-21T07:19:09.5377138Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T07:19:09.5377367Z       "requiredStages": [
2026-06-21T07:19:09.5377462Z         "impl",
2026-06-21T07:19:09.5377658Z         "unit"
2026-06-21T07:19:09.5377762Z       ],
2026-06-21T07:19:09.5377867Z       "stages": {
2026-06-21T07:19:09.5377971Z         "doc": {
2026-06-21T07:19:09.5378079Z           "complete": false,
2026-06-21T07:19:09.5378198Z           "evidence": []
2026-06-21T07:19:09.5378299Z         },
2026-06-21T07:19:09.5378417Z         "impl": {
2026-06-21T07:19:09.5378527Z           "complete": true,
2026-06-21T07:19:09.5378632Z           "evidence": [
2026-06-21T07:19:09.5378736Z             {
2026-06-21T07:19:09.5378886Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5379065Z               "line": 476
2026-06-21T07:19:09.5379162Z             },
2026-06-21T07:19:09.5379275Z             {
2026-06-21T07:19:09.5379423Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5379530Z               "line": 769
2026-06-21T07:19:09.5379634Z             },
2026-06-21T07:19:09.5379738Z             {
2026-06-21T07:19:09.5379886Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5379991Z               "line": 782
2026-06-21T07:19:09.5380102Z             },
2026-06-21T07:19:09.5380211Z             {
2026-06-21T07:19:09.5380344Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5380450Z               "line": 800
2026-06-21T07:19:09.5380544Z             },
2026-06-21T07:19:09.5380648Z             {
2026-06-21T07:19:09.5380782Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5380887Z               "line": 841
2026-06-21T07:19:09.5380996Z             }
2026-06-21T07:19:09.5381101Z           ]
2026-06-21T07:19:09.5381202Z         },
2026-06-21T07:19:09.5381306Z         "int": {
2026-06-21T07:19:09.5381431Z           "complete": false,
2026-06-21T07:19:09.5381540Z           "evidence": []
2026-06-21T07:19:09.5381653Z         },
2026-06-21T07:19:09.5381765Z         "unit": {
2026-06-21T07:19:09.5381878Z           "complete": true,
2026-06-21T07:19:09.5381992Z           "evidence": [
2026-06-21T07:19:09.5382089Z             {
2026-06-21T07:19:09.5382236Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5382346Z               "line": 1189
2026-06-21T07:19:09.5382451Z             },
2026-06-21T07:19:09.5382555Z             {
2026-06-21T07:19:09.5382695Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5382807Z               "line": 1213
2026-06-21T07:19:09.5382912Z             },
2026-06-21T07:19:09.5383017Z             {
2026-06-21T07:19:09.5383167Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.5383276Z               "line": 1239
2026-06-21T07:19:09.5383372Z             }
2026-06-21T07:19:09.5383477Z           ]
2026-06-21T07:19:09.5383576Z         }
2026-06-21T07:19:09.5383677Z       }
2026-06-21T07:19:09.5383782Z     },
2026-06-21T07:19:09.5383891Z     {
2026-06-21T07:19:09.5384002Z       "id": "REQ-DAEMON-6",
2026-06-21T07:19:09.5386110Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T07:19:09.5386239Z       "requiredStages": [
2026-06-21T07:19:09.5386340Z         "impl",
2026-06-21T07:19:09.5386574Z         "unit"
2026-06-21T07:19:09.5386674Z       ],
2026-06-21T07:19:09.5386787Z       "stages": {
2026-06-21T07:19:09.5386888Z         "doc": {
2026-06-21T07:19:09.5386998Z           "complete": false,
2026-06-21T07:19:09.5387112Z           "evidence": []
2026-06-21T07:19:09.5387217Z         },
2026-06-21T07:19:09.5387417Z         "impl": {
2026-06-21T07:19:09.5387523Z           "complete": true,
2026-06-21T07:19:09.5387640Z           "evidence": [
2026-06-21T07:19:09.5387741Z             {
2026-06-21T07:19:09.5387890Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5387999Z               "line": 495
2026-06-21T07:19:09.5388110Z             },
2026-06-21T07:19:09.5388219Z             {
2026-06-21T07:19:09.5388365Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5388469Z               "line": 526
2026-06-21T07:19:09.5388569Z             },
2026-06-21T07:19:09.5388667Z             {
2026-06-21T07:19:09.5388811Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5388921Z               "line": 55
2026-06-21T07:19:09.5389087Z             },
2026-06-21T07:19:09.5389187Z             {
2026-06-21T07:19:09.5389340Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5389451Z               "line": 70
2026-06-21T07:19:09.5389555Z             },
2026-06-21T07:19:09.5389654Z             {
2026-06-21T07:19:09.5389784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5389903Z               "line": 2020
2026-06-21T07:19:09.5389993Z             },
2026-06-21T07:19:09.5390095Z             {
2026-06-21T07:19:09.5390227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5390337Z               "line": 2046
2026-06-21T07:19:09.5390442Z             }
2026-06-21T07:19:09.5390542Z           ]
2026-06-21T07:19:09.5390647Z         },
2026-06-21T07:19:09.5390753Z         "int": {
2026-06-21T07:19:09.5390875Z           "complete": false,
2026-06-21T07:19:09.5390982Z           "evidence": []
2026-06-21T07:19:09.5391091Z         },
2026-06-21T07:19:09.5391199Z         "unit": {
2026-06-21T07:19:09.5391313Z           "complete": true,
2026-06-21T07:19:09.5391429Z           "evidence": [
2026-06-21T07:19:09.5391527Z             {
2026-06-21T07:19:09.5391676Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5391790Z               "line": 288
2026-06-21T07:19:09.5391894Z             },
2026-06-21T07:19:09.5392001Z             {
2026-06-21T07:19:09.5392138Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5392248Z               "line": 299
2026-06-21T07:19:09.5392348Z             },
2026-06-21T07:19:09.5392448Z             {
2026-06-21T07:19:09.5392577Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5392687Z               "line": 325
2026-06-21T07:19:09.5392791Z             },
2026-06-21T07:19:09.5392892Z             {
2026-06-21T07:19:09.5393039Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5393144Z               "line": 351
2026-06-21T07:19:09.5393245Z             }
2026-06-21T07:19:09.5393335Z           ]
2026-06-21T07:19:09.5393434Z         }
2026-06-21T07:19:09.5393543Z       }
2026-06-21T07:19:09.5393643Z     },
2026-06-21T07:19:09.5393742Z     {
2026-06-21T07:19:09.5393856Z       "id": "REQ-DAEMON-7",
2026-06-21T07:19:09.5395348Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T07:19:09.5395468Z       "requiredStages": [
2026-06-21T07:19:09.5395573Z         "impl",
2026-06-21T07:19:09.5395687Z         "unit"
2026-06-21T07:19:09.5395892Z       ],
2026-06-21T07:19:09.5396007Z       "stages": {
2026-06-21T07:19:09.5396107Z         "doc": {
2026-06-21T07:19:09.5396231Z           "complete": false,
2026-06-21T07:19:09.5396344Z           "evidence": []
2026-06-21T07:19:09.5396449Z         },
2026-06-21T07:19:09.5396557Z         "impl": {
2026-06-21T07:19:09.5396766Z           "complete": true,
2026-06-21T07:19:09.5396886Z           "evidence": [
2026-06-21T07:19:09.5396989Z             {
2026-06-21T07:19:09.5397139Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5397252Z               "line": 545
2026-06-21T07:19:09.5397357Z             },
2026-06-21T07:19:09.5397463Z             {
2026-06-21T07:19:09.5397610Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5397725Z               "line": 610
2026-06-21T07:19:09.5397825Z             },
2026-06-21T07:19:09.5397934Z             {
2026-06-21T07:19:09.5398078Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5398191Z               "line": 89
2026-06-21T07:19:09.5398296Z             },
2026-06-21T07:19:09.5398397Z             {
2026-06-21T07:19:09.5398520Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5398621Z               "line": 1957
2026-06-21T07:19:09.5398722Z             }
2026-06-21T07:19:09.5398830Z           ]
2026-06-21T07:19:09.5398925Z         },
2026-06-21T07:19:09.5399124Z         "int": {
2026-06-21T07:19:09.5399232Z           "complete": false,
2026-06-21T07:19:09.5399338Z           "evidence": []
2026-06-21T07:19:09.5399444Z         },
2026-06-21T07:19:09.5399532Z         "unit": {
2026-06-21T07:19:09.5399657Z           "complete": true,
2026-06-21T07:19:09.5399767Z           "evidence": [
2026-06-21T07:19:09.5399871Z             {
2026-06-21T07:19:09.5400015Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5400125Z               "line": 314
2026-06-21T07:19:09.5400219Z             },
2026-06-21T07:19:09.5400316Z             {
2026-06-21T07:19:09.5400454Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5400558Z               "line": 8102
2026-06-21T07:19:09.5400659Z             }
2026-06-21T07:19:09.5400759Z           ]
2026-06-21T07:19:09.5400868Z         }
2026-06-21T07:19:09.5400969Z       }
2026-06-21T07:19:09.5401072Z     },
2026-06-21T07:19:09.5401178Z     {
2026-06-21T07:19:09.5401284Z       "id": "REQ-DAEMON-8",
2026-06-21T07:19:09.5402298Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T07:19:09.5402407Z       "requiredStages": [
2026-06-21T07:19:09.5402513Z         "impl",
2026-06-21T07:19:09.5402617Z         "unit"
2026-06-21T07:19:09.5402721Z       ],
2026-06-21T07:19:09.5402832Z       "stages": {
2026-06-21T07:19:09.5402932Z         "doc": {
2026-06-21T07:19:09.5403050Z           "complete": false,
2026-06-21T07:19:09.5403156Z           "evidence": []
2026-06-21T07:19:09.5403270Z         },
2026-06-21T07:19:09.5403375Z         "impl": {
2026-06-21T07:19:09.5403481Z           "complete": true,
2026-06-21T07:19:09.5403599Z           "evidence": [
2026-06-21T07:19:09.5403704Z             {
2026-06-21T07:19:09.5403853Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5403961Z               "line": 445
2026-06-21T07:19:09.5404065Z             },
2026-06-21T07:19:09.5404175Z             {
2026-06-21T07:19:09.5404316Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5404426Z               "line": 56
2026-06-21T07:19:09.5404517Z             }
2026-06-21T07:19:09.5404626Z           ]
2026-06-21T07:19:09.5404716Z         },
2026-06-21T07:19:09.5404827Z         "int": {
2026-06-21T07:19:09.5404945Z           "complete": false,
2026-06-21T07:19:09.5405050Z           "evidence": []
2026-06-21T07:19:09.5405259Z         },
2026-06-21T07:19:09.5405365Z         "unit": {
2026-06-21T07:19:09.5405484Z           "complete": true,
2026-06-21T07:19:09.5405589Z           "evidence": [
2026-06-21T07:19:09.5405689Z             {
2026-06-21T07:19:09.5408676Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5409047Z               "line": 288
2026-06-21T07:19:09.5409157Z             },
2026-06-21T07:19:09.5409254Z             {
2026-06-21T07:19:09.5409423Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T07:19:09.5409527Z               "line": 325
2026-06-21T07:19:09.5409628Z             }
2026-06-21T07:19:09.5409731Z           ]
2026-06-21T07:19:09.5409830Z         }
2026-06-21T07:19:09.5409936Z       }
2026-06-21T07:19:09.5410036Z     },
2026-06-21T07:19:09.5410135Z     {
2026-06-21T07:19:09.5410251Z       "id": "REQ-DAEMON-9",
2026-06-21T07:19:09.5412738Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T07:19:09.5412867Z       "requiredStages": [
2026-06-21T07:19:09.5412976Z         "impl",
2026-06-21T07:19:09.5413078Z         "unit"
2026-06-21T07:19:09.5413182Z       ],
2026-06-21T07:19:09.5413277Z       "stages": {
2026-06-21T07:19:09.5413382Z         "doc": {
2026-06-21T07:19:09.5413497Z           "complete": false,
2026-06-21T07:19:09.5413620Z           "evidence": []
2026-06-21T07:19:09.5413721Z         },
2026-06-21T07:19:09.5413812Z         "impl": {
2026-06-21T07:19:09.5413921Z           "complete": true,
2026-06-21T07:19:09.5414027Z           "evidence": [
2026-06-21T07:19:09.5414136Z             {
2026-06-21T07:19:09.5414288Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5414390Z               "line": 276
2026-06-21T07:19:09.5414493Z             },
2026-06-21T07:19:09.5414597Z             {
2026-06-21T07:19:09.5414740Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5414847Z               "line": 1201
2026-06-21T07:19:09.5414951Z             },
2026-06-21T07:19:09.5415058Z             {
2026-06-21T07:19:09.5415195Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5415305Z               "line": 197
2026-06-21T07:19:09.5415411Z             },
2026-06-21T07:19:09.5415514Z             {
2026-06-21T07:19:09.5415639Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5415754Z               "line": 344
2026-06-21T07:19:09.5415853Z             },
2026-06-21T07:19:09.5415954Z             {
2026-06-21T07:19:09.5416102Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5416211Z               "line": 381
2026-06-21T07:19:09.5416322Z             },
2026-06-21T07:19:09.5416421Z             {
2026-06-21T07:19:09.5416549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5416660Z               "line": 2075
2026-06-21T07:19:09.5416764Z             }
2026-06-21T07:19:09.5416860Z           ]
2026-06-21T07:19:09.5416947Z         },
2026-06-21T07:19:09.5417054Z         "int": {
2026-06-21T07:19:09.5417165Z           "complete": false,
2026-06-21T07:19:09.5417271Z           "evidence": []
2026-06-21T07:19:09.5417379Z         },
2026-06-21T07:19:09.5417482Z         "unit": {
2026-06-21T07:19:09.5417603Z           "complete": true,
2026-06-21T07:19:09.5417710Z           "evidence": [
2026-06-21T07:19:09.5417910Z             {
2026-06-21T07:19:09.5418053Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5418162Z               "line": 1158
2026-06-21T07:19:09.5418263Z             },
2026-06-21T07:19:09.5418368Z             {
2026-06-21T07:19:09.5418492Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5418711Z               "line": 10580
2026-06-21T07:19:09.5418812Z             }
2026-06-21T07:19:09.5418912Z           ]
2026-06-21T07:19:09.5419097Z         }
2026-06-21T07:19:09.5419203Z       }
2026-06-21T07:19:09.5419302Z     },
2026-06-21T07:19:09.5419398Z     {
2026-06-21T07:19:09.5419509Z       "id": "REQ-DOCS-1",
2026-06-21T07:19:09.5419741Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T07:19:09.5419847Z       "requiredStages": [
2026-06-21T07:19:09.5419955Z         "doc",
2026-06-21T07:19:09.5420059Z         "impl"
2026-06-21T07:19:09.5420160Z       ],
2026-06-21T07:19:09.5420263Z       "stages": {
2026-06-21T07:19:09.5420366Z         "doc": {
2026-06-21T07:19:09.5420486Z           "complete": true,
2026-06-21T07:19:09.5420592Z           "evidence": [
2026-06-21T07:19:09.5420686Z             {
2026-06-21T07:19:09.5420811Z               "path": "docs-site/src/index.md",
2026-06-21T07:19:09.5434669Z               "line": 50
2026-06-21T07:19:09.5434793Z             }
2026-06-21T07:19:09.5434899Z           ]
2026-06-21T07:19:09.5435003Z         },
2026-06-21T07:19:09.5435118Z         "impl": {
2026-06-21T07:19:09.5435228Z           "complete": true,
2026-06-21T07:19:09.5435341Z           "evidence": [
2026-06-21T07:19:09.5435437Z             {
2026-06-21T07:19:09.5435604Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T07:19:09.5435713Z               "line": 12
2026-06-21T07:19:09.5435813Z             },
2026-06-21T07:19:09.5435921Z             {
2026-06-21T07:19:09.5436058Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.5436173Z               "line": 14
2026-06-21T07:19:09.5436292Z             }
2026-06-21T07:19:09.5436387Z           ]
2026-06-21T07:19:09.5436483Z         },
2026-06-21T07:19:09.5436588Z         "int": {
2026-06-21T07:19:09.5436706Z           "complete": false,
2026-06-21T07:19:09.5436813Z           "evidence": []
2026-06-21T07:19:09.5436917Z         },
2026-06-21T07:19:09.5437021Z         "unit": {
2026-06-21T07:19:09.5437142Z           "complete": false,
2026-06-21T07:19:09.5437246Z           "evidence": []
2026-06-21T07:19:09.5437355Z         }
2026-06-21T07:19:09.5437456Z       }
2026-06-21T07:19:09.5437556Z     },
2026-06-21T07:19:09.5437646Z     {
2026-06-21T07:19:09.5437757Z       "id": "REQ-DOCS-2",
2026-06-21T07:19:09.5437960Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T07:19:09.5438067Z       "requiredStages": [
2026-06-21T07:19:09.5438166Z         "doc",
2026-06-21T07:19:09.5438266Z         "int"
2026-06-21T07:19:09.5438367Z       ],
2026-06-21T07:19:09.5438467Z       "stages": {
2026-06-21T07:19:09.5438570Z         "doc": {
2026-06-21T07:19:09.5438694Z           "complete": true,
2026-06-21T07:19:09.5438803Z           "evidence": [
2026-06-21T07:19:09.5438906Z             {
2026-06-21T07:19:09.5439230Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T07:19:09.5439346Z               "line": 3
2026-06-21T07:19:09.5439451Z             },
2026-06-21T07:19:09.5439554Z             {
2026-06-21T07:19:09.5439717Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T07:19:09.5439822Z               "line": 3
2026-06-21T07:19:09.5439922Z             },
2026-06-21T07:19:09.5440028Z             {
2026-06-21T07:19:09.5440184Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T07:19:09.5440285Z               "line": 3
2026-06-21T07:19:09.5440384Z             }
2026-06-21T07:19:09.5440489Z           ]
2026-06-21T07:19:09.5440586Z         },
2026-06-21T07:19:09.5440690Z         "impl": {
2026-06-21T07:19:09.5440809Z           "complete": false,
2026-06-21T07:19:09.5441056Z           "evidence": []
2026-06-21T07:19:09.5441165Z         },
2026-06-21T07:19:09.5441270Z         "int": {
2026-06-21T07:19:09.5441383Z           "complete": true,
2026-06-21T07:19:09.5441491Z           "evidence": [
2026-06-21T07:19:09.5441593Z             {
2026-06-21T07:19:09.5441840Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T07:19:09.5441946Z               "line": 14
2026-06-21T07:19:09.5442055Z             }
2026-06-21T07:19:09.5442154Z           ]
2026-06-21T07:19:09.5442256Z         },
2026-06-21T07:19:09.5442360Z         "unit": {
2026-06-21T07:19:09.5442474Z           "complete": false,
2026-06-21T07:19:09.5442584Z           "evidence": []
2026-06-21T07:19:09.5442670Z         }
2026-06-21T07:19:09.5442774Z       }
2026-06-21T07:19:09.5442872Z     },
2026-06-21T07:19:09.5442975Z     {
2026-06-21T07:19:09.5443080Z       "id": "REQ-DOCS-3",
2026-06-21T07:19:09.5443400Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T07:19:09.5443534Z       "requiredStages": [
2026-06-21T07:19:09.5443642Z         "doc"
2026-06-21T07:19:09.5443743Z       ],
2026-06-21T07:19:09.5443840Z       "stages": {
2026-06-21T07:19:09.5443952Z         "doc": {
2026-06-21T07:19:09.5444056Z           "complete": true,
2026-06-21T07:19:09.5444176Z           "evidence": [
2026-06-21T07:19:09.5444281Z             {
2026-06-21T07:19:09.5444419Z               "path": "docs-site/src/index.md",
2026-06-21T07:19:09.5444520Z               "line": 42
2026-06-21T07:19:09.5444624Z             }
2026-06-21T07:19:09.5444724Z           ]
2026-06-21T07:19:09.5444810Z         },
2026-06-21T07:19:09.5444915Z         "impl": {
2026-06-21T07:19:09.5445039Z           "complete": false,
2026-06-21T07:19:09.5445139Z           "evidence": []
2026-06-21T07:19:09.5445244Z         },
2026-06-21T07:19:09.5445343Z         "int": {
2026-06-21T07:19:09.5445454Z           "complete": false,
2026-06-21T07:19:09.5445558Z           "evidence": []
2026-06-21T07:19:09.5445663Z         },
2026-06-21T07:19:09.5445769Z         "unit": {
2026-06-21T07:19:09.5445878Z           "complete": false,
2026-06-21T07:19:09.5445983Z           "evidence": []
2026-06-21T07:19:09.5446074Z         }
2026-06-21T07:19:09.5446178Z       }
2026-06-21T07:19:09.5446277Z     },
2026-06-21T07:19:09.5446382Z     {
2026-06-21T07:19:09.5446491Z       "id": "REQ-DOCS-4",
2026-06-21T07:19:09.5446723Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T07:19:09.5446833Z       "requiredStages": [
2026-06-21T07:19:09.5446937Z         "doc",
2026-06-21T07:19:09.5447043Z         "impl",
2026-06-21T07:19:09.5447139Z         "unit"
2026-06-21T07:19:09.5447242Z       ],
2026-06-21T07:19:09.5447344Z       "stages": {
2026-06-21T07:19:09.5447458Z         "doc": {
2026-06-21T07:19:09.5447562Z           "complete": true,
2026-06-21T07:19:09.5447673Z           "evidence": [
2026-06-21T07:19:09.5447777Z             {
2026-06-21T07:19:09.5447911Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T07:19:09.5448021Z               "line": 35
2026-06-21T07:19:09.5448126Z             }
2026-06-21T07:19:09.5448225Z           ]
2026-06-21T07:19:09.5448331Z         },
2026-06-21T07:19:09.5448439Z         "impl": {
2026-06-21T07:19:09.5448555Z           "complete": true,
2026-06-21T07:19:09.5448665Z           "evidence": [
2026-06-21T07:19:09.5448763Z             {
2026-06-21T07:19:09.5448913Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5449125Z               "line": 746
2026-06-21T07:19:09.5449230Z             },
2026-06-21T07:19:09.5449330Z             {
2026-06-21T07:19:09.5449461Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.5449567Z               "line": 15
2026-06-21T07:19:09.5449667Z             }
2026-06-21T07:19:09.5449766Z           ]
2026-06-21T07:19:09.5449872Z         },
2026-06-21T07:19:09.5449977Z         "int": {
2026-06-21T07:19:09.5450081Z           "complete": false,
2026-06-21T07:19:09.5450306Z           "evidence": []
2026-06-21T07:19:09.5450405Z         },
2026-06-21T07:19:09.5450511Z         "unit": {
2026-06-21T07:19:09.5450616Z           "complete": true,
2026-06-21T07:19:09.5450720Z           "evidence": [
2026-06-21T07:19:09.5450826Z             {
2026-06-21T07:19:09.5450978Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5451184Z               "line": 1682
2026-06-21T07:19:09.5451283Z             }
2026-06-21T07:19:09.5451388Z           ]
2026-06-21T07:19:09.5451475Z         }
2026-06-21T07:19:09.5451579Z       }
2026-06-21T07:19:09.5451668Z     },
2026-06-21T07:19:09.5451768Z     {
2026-06-21T07:19:09.5451873Z       "id": "REQ-DOCS-5",
2026-06-21T07:19:09.5452100Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T07:19:09.5452225Z       "requiredStages": [
2026-06-21T07:19:09.5452328Z         "impl",
2026-06-21T07:19:09.5452429Z         "int"
2026-06-21T07:19:09.5452534Z       ],
2026-06-21T07:19:09.5452633Z       "stages": {
2026-06-21T07:19:09.5452739Z         "doc": {
2026-06-21T07:19:09.5452858Z           "complete": false,
2026-06-21T07:19:09.5452967Z           "evidence": []
2026-06-21T07:19:09.5453073Z         },
2026-06-21T07:19:09.5453178Z         "impl": {
2026-06-21T07:19:09.5453287Z           "complete": true,
2026-06-21T07:19:09.5453397Z           "evidence": [
2026-06-21T07:19:09.5453502Z             {
2026-06-21T07:19:09.5453645Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5453756Z               "line": 747
2026-06-21T07:19:09.5453850Z             },
2026-06-21T07:19:09.5453955Z             {
2026-06-21T07:19:09.5454090Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.5454193Z               "line": 113
2026-06-21T07:19:09.5454298Z             }
2026-06-21T07:19:09.5454395Z           ]
2026-06-21T07:19:09.5454502Z         },
2026-06-21T07:19:09.5454592Z         "int": {
2026-06-21T07:19:09.5454708Z           "complete": true,
2026-06-21T07:19:09.5454808Z           "evidence": [
2026-06-21T07:19:09.5454912Z             {
2026-06-21T07:19:09.5455046Z               "path": ".github/workflows/ci.yml",
2026-06-21T07:19:09.5455151Z               "line": 190
2026-06-21T07:19:09.5455255Z             },
2026-06-21T07:19:09.5455357Z             {
2026-06-21T07:19:09.5455508Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.5455623Z               "line": 1719
2026-06-21T07:19:09.5455723Z             }
2026-06-21T07:19:09.5455823Z           ]
2026-06-21T07:19:09.5455923Z         },
2026-06-21T07:19:09.5456028Z         "unit": {
2026-06-21T07:19:09.5456133Z           "complete": false,
2026-06-21T07:19:09.5456253Z           "evidence": []
2026-06-21T07:19:09.5456353Z         }
2026-06-21T07:19:09.5456452Z       }
2026-06-21T07:19:09.5456553Z     },
2026-06-21T07:19:09.5456654Z     {
2026-06-21T07:19:09.5456772Z       "id": "REQ-DOCS-6",
2026-06-21T07:19:09.5457145Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T07:19:09.5457260Z       "requiredStages": [
2026-06-21T07:19:09.5457370Z         "impl",
2026-06-21T07:19:09.5457473Z         "unit",
2026-06-21T07:19:09.5457575Z         "int"
2026-06-21T07:19:09.5457670Z       ],
2026-06-21T07:19:09.5457784Z       "stages": {
2026-06-21T07:19:09.5457885Z         "doc": {
2026-06-21T07:19:09.5457999Z           "complete": true,
2026-06-21T07:19:09.5458112Z           "evidence": [
2026-06-21T07:19:09.5458214Z             {
2026-06-21T07:19:09.5458380Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T07:19:09.5458490Z               "line": 4
2026-06-21T07:19:09.5458595Z             }
2026-06-21T07:19:09.5458690Z           ]
2026-06-21T07:19:09.5458790Z         },
2026-06-21T07:19:09.5458901Z         "impl": {
2026-06-21T07:19:09.5459100Z           "complete": true,
2026-06-21T07:19:09.5459211Z           "evidence": [
2026-06-21T07:19:09.5459310Z             {
2026-06-21T07:19:09.5459550Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5459671Z               "line": 5240
2026-06-21T07:19:09.5459766Z             }
2026-06-21T07:19:09.5459867Z           ]
2026-06-21T07:19:09.5459970Z         },
2026-06-21T07:19:09.5460069Z         "int": {
2026-06-21T07:19:09.5460180Z           "complete": true,
2026-06-21T07:19:09.5460384Z           "evidence": [
2026-06-21T07:19:09.5460476Z             {
2026-06-21T07:19:09.5460632Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T07:19:09.5460732Z               "line": 39
2026-06-21T07:19:09.5460833Z             }
2026-06-21T07:19:09.5460933Z           ]
2026-06-21T07:19:09.5461033Z         },
2026-06-21T07:19:09.5461138Z         "unit": {
2026-06-21T07:19:09.5461243Z           "complete": true,
2026-06-21T07:19:09.5461343Z           "evidence": [
2026-06-21T07:19:09.5461453Z             {
2026-06-21T07:19:09.5461576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5461681Z               "line": 10742
2026-06-21T07:19:09.5461792Z             }
2026-06-21T07:19:09.5461885Z           ]
2026-06-21T07:19:09.5461987Z         }
2026-06-21T07:19:09.5462093Z       }
2026-06-21T07:19:09.5462195Z     },
2026-06-21T07:19:09.5462286Z     {
2026-06-21T07:19:09.5462405Z       "id": "REQ-ELEVATE-1",
2026-06-21T07:19:09.5465772Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T07:19:09.5465931Z       "requiredStages": [
2026-06-21T07:19:09.5466040Z         "doc",
2026-06-21T07:19:09.5466144Z         "impl",
2026-06-21T07:19:09.5466241Z         "unit"
2026-06-21T07:19:09.5466340Z       ],
2026-06-21T07:19:09.5466454Z       "stages": {
2026-06-21T07:19:09.5466556Z         "doc": {
2026-06-21T07:19:09.5466669Z           "complete": true,
2026-06-21T07:19:09.5466774Z           "evidence": [
2026-06-21T07:19:09.5466876Z             {
2026-06-21T07:19:09.5466988Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5467103Z               "line": 687
2026-06-21T07:19:09.5467200Z             }
2026-06-21T07:19:09.5467298Z           ]
2026-06-21T07:19:09.5467407Z         },
2026-06-21T07:19:09.5467512Z         "impl": {
2026-06-21T07:19:09.5467625Z           "complete": true,
2026-06-21T07:19:09.5467724Z           "evidence": [
2026-06-21T07:19:09.5467830Z             {
2026-06-21T07:19:09.5467958Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5468072Z               "line": 3572
2026-06-21T07:19:09.5468178Z             },
2026-06-21T07:19:09.5468282Z             {
2026-06-21T07:19:09.5468411Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5468526Z               "line": 3617
2026-06-21T07:19:09.5468635Z             },
2026-06-21T07:19:09.5468735Z             {
2026-06-21T07:19:09.5468860Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5469045Z               "line": 3679
2026-06-21T07:19:09.5469136Z             },
2026-06-21T07:19:09.5469241Z             {
2026-06-21T07:19:09.5469370Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.5469475Z               "line": 92
2026-06-21T07:19:09.5469699Z             },
2026-06-21T07:19:09.5469809Z             {
2026-06-21T07:19:09.5469947Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.5470062Z               "line": 148
2026-06-21T07:19:09.5470161Z             }
2026-06-21T07:19:09.5470260Z           ]
2026-06-21T07:19:09.5470455Z         },
2026-06-21T07:19:09.5470563Z         "int": {
2026-06-21T07:19:09.5470677Z           "complete": false,
2026-06-21T07:19:09.5470783Z           "evidence": []
2026-06-21T07:19:09.5470882Z         },
2026-06-21T07:19:09.5470982Z         "unit": {
2026-06-21T07:19:09.5471093Z           "complete": true,
2026-06-21T07:19:09.5471206Z           "evidence": [
2026-06-21T07:19:09.5471307Z             {
2026-06-21T07:19:09.5471445Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.5471554Z               "line": 442
2026-06-21T07:19:09.5471660Z             },
2026-06-21T07:19:09.5471765Z             {
2026-06-21T07:19:09.5471893Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.5472004Z               "line": 460
2026-06-21T07:19:09.5472107Z             }
2026-06-21T07:19:09.5472213Z           ]
2026-06-21T07:19:09.5472328Z         }
2026-06-21T07:19:09.5472485Z       }
2026-06-21T07:19:09.5472643Z     },
2026-06-21T07:19:09.5473068Z     {
2026-06-21T07:19:09.5473365Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T07:19:09.5475399Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T07:19:09.5477140Z       "requiredStages": [
2026-06-21T07:19:09.5477392Z         "doc",
2026-06-21T07:19:09.5477601Z         "impl",
2026-06-21T07:19:09.5477816Z         "unit"
2026-06-21T07:19:09.5478015Z       ],
2026-06-21T07:19:09.5478199Z       "stages": {
2026-06-21T07:19:09.5478414Z         "doc": {
2026-06-21T07:19:09.5478632Z           "complete": true,
2026-06-21T07:19:09.5478866Z           "evidence": [
2026-06-21T07:19:09.5479171Z             {
2026-06-21T07:19:09.5479391Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5479644Z               "line": 711
2026-06-21T07:19:09.5479872Z             }
2026-06-21T07:19:09.5480063Z           ]
2026-06-21T07:19:09.5480269Z         },
2026-06-21T07:19:09.5480473Z         "impl": {
2026-06-21T07:19:09.5480693Z           "complete": true,
2026-06-21T07:19:09.5480949Z           "evidence": [
2026-06-21T07:19:09.5481170Z             {
2026-06-21T07:19:09.5481404Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5481686Z               "line": 1721
2026-06-21T07:19:09.5481906Z             },
2026-06-21T07:19:09.5482119Z             {
2026-06-21T07:19:09.5482339Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5482611Z               "line": 3125
2026-06-21T07:19:09.5482841Z             },
2026-06-21T07:19:09.5483045Z             {
2026-06-21T07:19:09.5483265Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5483539Z               "line": 3134
2026-06-21T07:19:09.5483766Z             }
2026-06-21T07:19:09.5483967Z           ]
2026-06-21T07:19:09.5484167Z         },
2026-06-21T07:19:09.5484366Z         "int": {
2026-06-21T07:19:09.5484577Z           "complete": false,
2026-06-21T07:19:09.5484825Z           "evidence": []
2026-06-21T07:19:09.5485206Z         },
2026-06-21T07:19:09.5485544Z         "unit": {
2026-06-21T07:19:09.5485878Z           "complete": true,
2026-06-21T07:19:09.5486315Z           "evidence": [
2026-06-21T07:19:09.5486693Z             {
2026-06-21T07:19:09.5487269Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5487737Z               "line": 7950
2026-06-21T07:19:09.5488089Z             },
2026-06-21T07:19:09.5488386Z             {
2026-06-21T07:19:09.5488726Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5489431Z               "line": 7991
2026-06-21T07:19:09.5489817Z             }
2026-06-21T07:19:09.5490156Z           ]
2026-06-21T07:19:09.5490470Z         }
2026-06-21T07:19:09.5490776Z       }
2026-06-21T07:19:09.5491076Z     },
2026-06-21T07:19:09.5491475Z     {
2026-06-21T07:19:09.5491850Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T07:19:09.5498198Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T07:19:09.5502601Z       "requiredStages": [
2026-06-21T07:19:09.5502844Z         "doc",
2026-06-21T07:19:09.5503064Z         "impl",
2026-06-21T07:19:09.5503268Z         "unit",
2026-06-21T07:19:09.5503469Z         "int"
2026-06-21T07:19:09.5503670Z       ],
2026-06-21T07:19:09.5503879Z       "stages": {
2026-06-21T07:19:09.5504088Z         "doc": {
2026-06-21T07:19:09.5504310Z           "complete": true,
2026-06-21T07:19:09.5504545Z           "evidence": [
2026-06-21T07:19:09.5504767Z             {
2026-06-21T07:19:09.5504987Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5505244Z               "line": 163
2026-06-21T07:19:09.5505463Z             }
2026-06-21T07:19:09.5505664Z           ]
2026-06-21T07:19:09.5505859Z         },
2026-06-21T07:19:09.5506064Z         "impl": {
2026-06-21T07:19:09.5506293Z           "complete": true,
2026-06-21T07:19:09.5506538Z           "evidence": [
2026-06-21T07:19:09.5506746Z             {
2026-06-21T07:19:09.5507003Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.5507303Z               "line": 105
2026-06-21T07:19:09.5507542Z             },
2026-06-21T07:19:09.5507751Z             {
2026-06-21T07:19:09.5507966Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5508242Z               "line": 7219
2026-06-21T07:19:09.5508467Z             }
2026-06-21T07:19:09.5508666Z           ]
2026-06-21T07:19:09.5508863Z         },
2026-06-21T07:19:09.5509140Z         "int": {
2026-06-21T07:19:09.5509358Z           "complete": true,
2026-06-21T07:19:09.5509590Z           "evidence": [
2026-06-21T07:19:09.5509814Z             {
2026-06-21T07:19:09.5510032Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5510303Z               "line": 7384
2026-06-21T07:19:09.5510518Z             }
2026-06-21T07:19:09.5510719Z           ]
2026-06-21T07:19:09.5511072Z         },
2026-06-21T07:19:09.5511262Z         "unit": {
2026-06-21T07:19:09.5511487Z           "complete": true,
2026-06-21T07:19:09.5511721Z           "evidence": [
2026-06-21T07:19:09.5511940Z             {
2026-06-21T07:19:09.5512163Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5512534Z               "line": 7355
2026-06-21T07:19:09.5512756Z             }
2026-06-21T07:19:09.5512956Z           ]
2026-06-21T07:19:09.5513151Z         }
2026-06-21T07:19:09.5513338Z       }
2026-06-21T07:19:09.5513533Z     },
2026-06-21T07:19:09.5513729Z     {
2026-06-21T07:19:09.5513949Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T07:19:09.5515509Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T07:19:09.5516788Z       "requiredStages": [
2026-06-21T07:19:09.5517024Z         "impl",
2026-06-21T07:19:09.5517234Z         "unit"
2026-06-21T07:19:09.5517436Z       ],
2026-06-21T07:19:09.5523051Z       "stages": {
2026-06-21T07:19:09.5523302Z         "doc": {
2026-06-21T07:19:09.5523541Z           "complete": false,
2026-06-21T07:19:09.5523793Z           "evidence": []
2026-06-21T07:19:09.5524016Z         },
2026-06-21T07:19:09.5524213Z         "impl": {
2026-06-21T07:19:09.5524432Z           "complete": true,
2026-06-21T07:19:09.5524679Z           "evidence": [
2026-06-21T07:19:09.5524894Z             {
2026-06-21T07:19:09.5525134Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5525401Z               "line": 3165
2026-06-21T07:19:09.5525637Z             }
2026-06-21T07:19:09.5525831Z           ]
2026-06-21T07:19:09.5526031Z         },
2026-06-21T07:19:09.5526240Z         "int": {
2026-06-21T07:19:09.5526455Z           "complete": false,
2026-06-21T07:19:09.5526694Z           "evidence": []
2026-06-21T07:19:09.5526922Z         },
2026-06-21T07:19:09.5527122Z         "unit": {
2026-06-21T07:19:09.5527348Z           "complete": true,
2026-06-21T07:19:09.5527589Z           "evidence": [
2026-06-21T07:19:09.5527804Z             {
2026-06-21T07:19:09.5528029Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5528297Z               "line": 7331
2026-06-21T07:19:09.5528522Z             }
2026-06-21T07:19:09.5528720Z           ]
2026-06-21T07:19:09.5528909Z         }
2026-06-21T07:19:09.5529205Z       }
2026-06-21T07:19:09.5529392Z     },
2026-06-21T07:19:09.5529578Z     {
2026-06-21T07:19:09.5529777Z       "id": "REQ-EP-1",
2026-06-21T07:19:09.5530054Z       "title": "Day-one endpoint types; open type system",
2026-06-21T07:19:09.5530359Z       "requiredStages": [
2026-06-21T07:19:09.5530584Z         "impl",
2026-06-21T07:19:09.5530787Z         "unit"
2026-06-21T07:19:09.5530990Z       ],
2026-06-21T07:19:09.5531181Z       "stages": {
2026-06-21T07:19:09.5531394Z         "doc": {
2026-06-21T07:19:09.5531615Z           "complete": false,
2026-06-21T07:19:09.5531849Z           "evidence": []
2026-06-21T07:19:09.5532072Z         },
2026-06-21T07:19:09.5532273Z         "impl": {
2026-06-21T07:19:09.5532492Z           "complete": true,
2026-06-21T07:19:09.5532726Z           "evidence": [
2026-06-21T07:19:09.5532945Z             {
2026-06-21T07:19:09.5533188Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5533485Z               "line": 77
2026-06-21T07:19:09.5533697Z             },
2026-06-21T07:19:09.5533895Z             {
2026-06-21T07:19:09.5534139Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5534421Z               "line": 94
2026-06-21T07:19:09.5534639Z             }
2026-06-21T07:19:09.5534835Z           ]
2026-06-21T07:19:09.5535016Z         },
2026-06-21T07:19:09.5535215Z         "int": {
2026-06-21T07:19:09.5535559Z           "complete": false,
2026-06-21T07:19:09.5535811Z           "evidence": []
2026-06-21T07:19:09.5536028Z         },
2026-06-21T07:19:09.5536225Z         "unit": {
2026-06-21T07:19:09.5536447Z           "complete": true,
2026-06-21T07:19:09.5536677Z           "evidence": [
2026-06-21T07:19:09.5537006Z             {
2026-06-21T07:19:09.5537249Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5537540Z               "line": 161
2026-06-21T07:19:09.5537749Z             },
2026-06-21T07:19:09.5537955Z             {
2026-06-21T07:19:09.5538189Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5538474Z               "line": 178
2026-06-21T07:19:09.5538688Z             }
2026-06-21T07:19:09.5538886Z           ]
2026-06-21T07:19:09.5539150Z         }
2026-06-21T07:19:09.5539341Z       }
2026-06-21T07:19:09.5539532Z     },
2026-06-21T07:19:09.5539713Z     {
2026-06-21T07:19:09.5539904Z       "id": "REQ-EP-2",
2026-06-21T07:19:09.5540214Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T07:19:09.5540552Z       "requiredStages": [
2026-06-21T07:19:09.5540777Z         "impl",
2026-06-21T07:19:09.5540981Z         "unit"
2026-06-21T07:19:09.5541177Z       ],
2026-06-21T07:19:09.5541390Z       "stages": {
2026-06-21T07:19:09.5541603Z         "doc": {
2026-06-21T07:19:09.5541818Z           "complete": false,
2026-06-21T07:19:09.5542065Z           "evidence": []
2026-06-21T07:19:09.5542274Z         },
2026-06-21T07:19:09.5542471Z         "impl": {
2026-06-21T07:19:09.5542686Z           "complete": true,
2026-06-21T07:19:09.5542909Z           "evidence": [
2026-06-21T07:19:09.5543114Z             {
2026-06-21T07:19:09.5543363Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5543654Z               "line": 114
2026-06-21T07:19:09.5543867Z             },
2026-06-21T07:19:09.5544063Z             {
2026-06-21T07:19:09.5544301Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5544579Z               "line": 131
2026-06-21T07:19:09.5544789Z             },
2026-06-21T07:19:09.5544985Z             {
2026-06-21T07:19:09.5545218Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5545489Z               "line": 138
2026-06-21T07:19:09.5545699Z             }
2026-06-21T07:19:09.5545892Z           ]
2026-06-21T07:19:09.5546086Z         },
2026-06-21T07:19:09.5546325Z         "int": {
2026-06-21T07:19:09.5546531Z           "complete": false,
2026-06-21T07:19:09.5546757Z           "evidence": []
2026-06-21T07:19:09.5546961Z         },
2026-06-21T07:19:09.5547156Z         "unit": {
2026-06-21T07:19:09.5547360Z           "complete": true,
2026-06-21T07:19:09.5547594Z           "evidence": [
2026-06-21T07:19:09.5547805Z             {
2026-06-21T07:19:09.5548047Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5548328Z               "line": 190
2026-06-21T07:19:09.5548539Z             },
2026-06-21T07:19:09.5548739Z             {
2026-06-21T07:19:09.5549064Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5549340Z               "line": 208
2026-06-21T07:19:09.5549558Z             },
2026-06-21T07:19:09.5549753Z             {
2026-06-21T07:19:09.5549981Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T07:19:09.5550263Z               "line": 221
2026-06-21T07:19:09.5550483Z             }
2026-06-21T07:19:09.5550679Z           ]
2026-06-21T07:19:09.5550873Z         }
2026-06-21T07:19:09.5551075Z       }
2026-06-21T07:19:09.5551255Z     },
2026-06-21T07:19:09.5551432Z     {
2026-06-21T07:19:09.5551623Z       "id": "REQ-EP-3",
2026-06-21T07:19:09.5551955Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T07:19:09.5552311Z       "requiredStages": [
2026-06-21T07:19:09.5552534Z         "impl",
2026-06-21T07:19:09.5552730Z         "unit"
2026-06-21T07:19:09.5552926Z       ],
2026-06-21T07:19:09.5553121Z       "stages": {
2026-06-21T07:19:09.5553421Z         "doc": {
2026-06-21T07:19:09.5553636Z           "complete": false,
2026-06-21T07:19:09.5553870Z           "evidence": []
2026-06-21T07:19:09.5554070Z         },
2026-06-21T07:19:09.5554276Z         "impl": {
2026-06-21T07:19:09.5554476Z           "complete": true,
2026-06-21T07:19:09.5554808Z           "evidence": [
2026-06-21T07:19:09.5555025Z             {
2026-06-21T07:19:09.5555259Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5555541Z               "line": 31
2026-06-21T07:19:09.5555754Z             },
2026-06-21T07:19:09.5555951Z             {
2026-06-21T07:19:09.5556184Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5556457Z               "line": 49
2026-06-21T07:19:09.5556670Z             }
2026-06-21T07:19:09.5556861Z           ]
2026-06-21T07:19:09.5557052Z         },
2026-06-21T07:19:09.5557242Z         "int": {
2026-06-21T07:19:09.5557455Z           "complete": false,
2026-06-21T07:19:09.5557686Z           "evidence": []
2026-06-21T07:19:09.5557902Z         },
2026-06-21T07:19:09.5558088Z         "unit": {
2026-06-21T07:19:09.5558302Z           "complete": true,
2026-06-21T07:19:09.5558532Z           "evidence": [
2026-06-21T07:19:09.5558751Z             {
2026-06-21T07:19:09.5559075Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5559366Z               "line": 156
2026-06-21T07:19:09.5559585Z             },
2026-06-21T07:19:09.5559775Z             {
2026-06-21T07:19:09.5560006Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5560289Z               "line": 164
2026-06-21T07:19:09.5560494Z             },
2026-06-21T07:19:09.5560695Z             {
2026-06-21T07:19:09.5560939Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5561224Z               "line": 177
2026-06-21T07:19:09.5561447Z             },
2026-06-21T07:19:09.5561644Z             {
2026-06-21T07:19:09.5561878Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5562163Z               "line": 200
2026-06-21T07:19:09.5562382Z             },
2026-06-21T07:19:09.5562563Z             {
2026-06-21T07:19:09.5562808Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5563089Z               "line": 216
2026-06-21T07:19:09.5563314Z             },
2026-06-21T07:19:09.5563520Z             {
2026-06-21T07:19:09.5563762Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T07:19:09.5564043Z               "line": 233
2026-06-21T07:19:09.5564258Z             }
2026-06-21T07:19:09.5564460Z           ]
2026-06-21T07:19:09.5564649Z         }
2026-06-21T07:19:09.5564850Z       }
2026-06-21T07:19:09.5565041Z     },
2026-06-21T07:19:09.5565240Z     {
2026-06-21T07:19:09.5565440Z       "id": "REQ-EP-4",
2026-06-21T07:19:09.5565733Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T07:19:09.5566053Z       "requiredStages": [
2026-06-21T07:19:09.5566281Z         "impl",
2026-06-21T07:19:09.5566487Z         "unit"
2026-06-21T07:19:09.5566692Z       ],
2026-06-21T07:19:09.5566887Z       "stages": {
2026-06-21T07:19:09.5567102Z         "doc": {
2026-06-21T07:19:09.5567317Z           "complete": false,
2026-06-21T07:19:09.5567550Z           "evidence": []
2026-06-21T07:19:09.5567774Z         },
2026-06-21T07:19:09.5567973Z         "impl": {
2026-06-21T07:19:09.5568189Z           "complete": true,
2026-06-21T07:19:09.5568434Z           "evidence": [
2026-06-21T07:19:09.5568658Z             {
2026-06-21T07:19:09.5568895Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5569259Z               "line": 764
2026-06-21T07:19:09.5569482Z             },
2026-06-21T07:19:09.5569678Z             {
2026-06-21T07:19:09.5569912Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5570199Z               "line": 1127
2026-06-21T07:19:09.5570408Z             },
2026-06-21T07:19:09.5570613Z             {
2026-06-21T07:19:09.5570850Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5571237Z               "line": 2270
2026-06-21T07:19:09.5571460Z             },
2026-06-21T07:19:09.5571651Z             {
2026-06-21T07:19:09.5571885Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5572162Z               "line": 118
2026-06-21T07:19:09.5572496Z             },
2026-06-21T07:19:09.5572695Z             {
2026-06-21T07:19:09.5572937Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5573221Z               "line": 699
2026-06-21T07:19:09.5573440Z             },
2026-06-21T07:19:09.5573640Z             {
2026-06-21T07:19:09.5573870Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5574136Z               "line": 836
2026-06-21T07:19:09.5574356Z             },
2026-06-21T07:19:09.5574551Z             {
2026-06-21T07:19:09.5574789Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5575076Z               "line": 321
2026-06-21T07:19:09.5575291Z             },
2026-06-21T07:19:09.5575490Z             {
2026-06-21T07:19:09.5575734Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5576019Z               "line": 508
2026-06-21T07:19:09.5576240Z             },
2026-06-21T07:19:09.5576436Z             {
2026-06-21T07:19:09.5576685Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5576975Z               "line": 1334
2026-06-21T07:19:09.5577199Z             }
2026-06-21T07:19:09.5577395Z           ]
2026-06-21T07:19:09.5577596Z         },
2026-06-21T07:19:09.5577785Z         "int": {
2026-06-21T07:19:09.5578005Z           "complete": false,
2026-06-21T07:19:09.5578240Z           "evidence": []
2026-06-21T07:19:09.5578461Z         },
2026-06-21T07:19:09.5578665Z         "unit": {
2026-06-21T07:19:09.5578874Z           "complete": true,
2026-06-21T07:19:09.5579232Z           "evidence": [
2026-06-21T07:19:09.5579451Z             {
2026-06-21T07:19:09.5579684Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5579961Z               "line": 927
2026-06-21T07:19:09.5580186Z             },
2026-06-21T07:19:09.5580385Z             {
2026-06-21T07:19:09.5580639Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T07:19:09.5580929Z               "line": 76
2026-06-21T07:19:09.5581150Z             },
2026-06-21T07:19:09.5581352Z             {
2026-06-21T07:19:09.5581591Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T07:19:09.5581882Z               "line": 147
2026-06-21T07:19:09.5582097Z             }
2026-06-21T07:19:09.5582296Z           ]
2026-06-21T07:19:09.5582492Z         }
2026-06-21T07:19:09.5582689Z       }
2026-06-21T07:19:09.5582883Z     },
2026-06-21T07:19:09.5583075Z     {
2026-06-21T07:19:09.5583279Z       "id": "REQ-EP-5",
2026-06-21T07:19:09.5584110Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T07:19:09.5584950Z       "requiredStages": [
2026-06-21T07:19:09.5585173Z         "impl",
2026-06-21T07:19:09.5585393Z         "unit",
2026-06-21T07:19:09.5585594Z         "int"
2026-06-21T07:19:09.5585783Z       ],
2026-06-21T07:19:09.5585984Z       "stages": {
2026-06-21T07:19:09.5586195Z         "doc": {
2026-06-21T07:19:09.5586417Z           "complete": false,
2026-06-21T07:19:09.5586658Z           "evidence": []
2026-06-21T07:19:09.5586877Z         },
2026-06-21T07:19:09.5587072Z         "impl": {
2026-06-21T07:19:09.5587293Z           "complete": true,
2026-06-21T07:19:09.5587527Z           "evidence": [
2026-06-21T07:19:09.5587744Z             {
2026-06-21T07:19:09.5587997Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.5588302Z               "line": 367
2026-06-21T07:19:09.5588513Z             },
2026-06-21T07:19:09.5588713Z             {
2026-06-21T07:19:09.5589031Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5589430Z               "line": 18
2026-06-21T07:19:09.5589648Z             },
2026-06-21T07:19:09.5589845Z             {
2026-06-21T07:19:09.5590088Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5590375Z               "line": 63
2026-06-21T07:19:09.5590684Z             },
2026-06-21T07:19:09.5590888Z             {
2026-06-21T07:19:09.5591117Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5591409Z               "line": 92
2026-06-21T07:19:09.5591629Z             },
2026-06-21T07:19:09.5591827Z             {
2026-06-21T07:19:09.5592066Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5592352Z               "line": 167
2026-06-21T07:19:09.5592566Z             },
2026-06-21T07:19:09.5592767Z             {
2026-06-21T07:19:09.5593005Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5593292Z               "line": 179
2026-06-21T07:19:09.5593525Z             },
2026-06-21T07:19:09.5593715Z             {
2026-06-21T07:19:09.5593954Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.5594229Z               "line": 114
2026-06-21T07:19:09.5594446Z             },
2026-06-21T07:19:09.5594648Z             {
2026-06-21T07:19:09.5594885Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5595176Z               "line": 22
2026-06-21T07:19:09.5595409Z             },
2026-06-21T07:19:09.5595609Z             {
2026-06-21T07:19:09.5595849Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5596135Z               "line": 145
2026-06-21T07:19:09.5596348Z             },
2026-06-21T07:19:09.5596554Z             {
2026-06-21T07:19:09.5596779Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5597072Z               "line": 174
2026-06-21T07:19:09.5597298Z             },
2026-06-21T07:19:09.5597504Z             {
2026-06-21T07:19:09.5597743Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5598029Z               "line": 196
2026-06-21T07:19:09.5598252Z             },
2026-06-21T07:19:09.5598453Z             {
2026-06-21T07:19:09.5598687Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5599055Z               "line": 221
2026-06-21T07:19:09.5599278Z             },
2026-06-21T07:19:09.5599472Z             {
2026-06-21T07:19:09.5599706Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5603489Z               "line": 247
2026-06-21T07:19:09.5603736Z             },
2026-06-21T07:19:09.5603946Z             {
2026-06-21T07:19:09.5604204Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5604500Z               "line": 270
2026-06-21T07:19:09.5604717Z             },
2026-06-21T07:19:09.5604916Z             {
2026-06-21T07:19:09.5605160Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.5605455Z               "line": 104
2026-06-21T07:19:09.5605683Z             },
2026-06-21T07:19:09.5605879Z             {
2026-06-21T07:19:09.5606104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5606380Z               "line": 6068
2026-06-21T07:19:09.5606593Z             },
2026-06-21T07:19:09.5606790Z             {
2026-06-21T07:19:09.5607015Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5607281Z               "line": 6202
2026-06-21T07:19:09.5607490Z             },
2026-06-21T07:19:09.5607670Z             {
2026-06-21T07:19:09.5607887Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5608145Z               "line": 6368
2026-06-21T07:19:09.5608365Z             },
2026-06-21T07:19:09.5608560Z             {
2026-06-21T07:19:09.5608780Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5609136Z               "line": 6896
2026-06-21T07:19:09.5609352Z             }
2026-06-21T07:19:09.5609548Z           ]
2026-06-21T07:19:09.5609742Z         },
2026-06-21T07:19:09.5610080Z         "int": {
2026-06-21T07:19:09.5610299Z           "complete": true,
2026-06-21T07:19:09.5610526Z           "evidence": [
2026-06-21T07:19:09.5610740Z             {
2026-06-21T07:19:09.5610998Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T07:19:09.5611294Z               "line": 16
2026-06-21T07:19:09.5611632Z             },
2026-06-21T07:19:09.5611829Z             {
2026-06-21T07:19:09.5612066Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T07:19:09.5612342Z               "line": 15
2026-06-21T07:19:09.5612557Z             }
2026-06-21T07:19:09.5612744Z           ]
2026-06-21T07:19:09.5612942Z         },
2026-06-21T07:19:09.5613138Z         "unit": {
2026-06-21T07:19:09.5613347Z           "complete": true,
2026-06-21T07:19:09.5613576Z           "evidence": [
2026-06-21T07:19:09.5613782Z             {
2026-06-21T07:19:09.5614025Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5614310Z               "line": 246
2026-06-21T07:19:09.5614530Z             },
2026-06-21T07:19:09.5614722Z             {
2026-06-21T07:19:09.5614959Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5615239Z               "line": 306
2026-06-21T07:19:09.5615453Z             },
2026-06-21T07:19:09.5615647Z             {
2026-06-21T07:19:09.5615885Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T07:19:09.5616167Z               "line": 363
2026-06-21T07:19:09.5616387Z             },
2026-06-21T07:19:09.5616582Z             {
2026-06-21T07:19:09.5616820Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5617106Z               "line": 286
2026-06-21T07:19:09.5617322Z             },
2026-06-21T07:19:09.5617512Z             {
2026-06-21T07:19:09.5617660Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.5617765Z               "line": 338
2026-06-21T07:19:09.5617870Z             },
2026-06-21T07:19:09.5617961Z             {
2026-06-21T07:19:09.5618111Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.5618217Z               "line": 783
2026-06-21T07:19:09.5618325Z             },
2026-06-21T07:19:09.5618423Z             {
2026-06-21T07:19:09.5618543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5618654Z               "line": 8751
2026-06-21T07:19:09.5618757Z             },
2026-06-21T07:19:09.5618858Z             {
2026-06-21T07:19:09.5619048Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5619164Z               "line": 8904
2026-06-21T07:19:09.5619264Z             },
2026-06-21T07:19:09.5619363Z             {
2026-06-21T07:19:09.5619488Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5619597Z               "line": 9493
2026-06-21T07:19:09.5619701Z             },
2026-06-21T07:19:09.5619803Z             {
2026-06-21T07:19:09.5619926Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5620040Z               "line": 9609
2026-06-21T07:19:09.5620141Z             }
2026-06-21T07:19:09.5620246Z           ]
2026-06-21T07:19:09.5620336Z         }
2026-06-21T07:19:09.5620442Z       }
2026-06-21T07:19:09.5620542Z     },
2026-06-21T07:19:09.5620645Z     {
2026-06-21T07:19:09.5620750Z       "id": "REQ-EP-6",
2026-06-21T07:19:09.5622365Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T07:19:09.5622492Z       "requiredStages": [
2026-06-21T07:19:09.5622592Z         "doc",
2026-06-21T07:19:09.5622703Z         "impl",
2026-06-21T07:19:09.5622802Z         "unit"
2026-06-21T07:19:09.5622902Z       ],
2026-06-21T07:19:09.5623108Z       "stages": {
2026-06-21T07:19:09.5623208Z         "doc": {
2026-06-21T07:19:09.5623319Z           "complete": true,
2026-06-21T07:19:09.5623418Z           "evidence": [
2026-06-21T07:19:09.5623517Z             {
2026-06-21T07:19:09.5623650Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5623756Z               "line": 227
2026-06-21T07:19:09.5623956Z             }
2026-06-21T07:19:09.5624056Z           ]
2026-06-21T07:19:09.5624155Z         },
2026-06-21T07:19:09.5624256Z         "impl": {
2026-06-21T07:19:09.5624370Z           "complete": true,
2026-06-21T07:19:09.5624479Z           "evidence": [
2026-06-21T07:19:09.5624580Z             {
2026-06-21T07:19:09.5624723Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5624832Z               "line": 212
2026-06-21T07:19:09.5624934Z             }
2026-06-21T07:19:09.5625038Z           ]
2026-06-21T07:19:09.5625138Z         },
2026-06-21T07:19:09.5625234Z         "int": {
2026-06-21T07:19:09.5625343Z           "complete": true,
2026-06-21T07:19:09.5625452Z           "evidence": [
2026-06-21T07:19:09.5625554Z             {
2026-06-21T07:19:09.5625690Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T07:19:09.5625799Z               "line": 18
2026-06-21T07:19:09.5625900Z             }
2026-06-21T07:19:09.5626003Z           ]
2026-06-21T07:19:09.5626098Z         },
2026-06-21T07:19:09.5626193Z         "unit": {
2026-06-21T07:19:09.5626304Z           "complete": true,
2026-06-21T07:19:09.5626408Z           "evidence": [
2026-06-21T07:19:09.5626512Z             {
2026-06-21T07:19:09.5626665Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.5626774Z               "line": 556
2026-06-21T07:19:09.5626867Z             },
2026-06-21T07:19:09.5626971Z             {
2026-06-21T07:19:09.5627103Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5627205Z               "line": 904
2026-06-21T07:19:09.5627309Z             }
2026-06-21T07:19:09.5627409Z           ]
2026-06-21T07:19:09.5627510Z         }
2026-06-21T07:19:09.5627605Z       }
2026-06-21T07:19:09.5627710Z     },
2026-06-21T07:19:09.5627806Z     {
2026-06-21T07:19:09.5627914Z       "id": "REQ-EP-7",
2026-06-21T07:19:09.5629709Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T07:19:09.5629833Z       "requiredStages": [
2026-06-21T07:19:09.5629942Z         "doc",
2026-06-21T07:19:09.5630043Z         "impl",
2026-06-21T07:19:09.5630148Z         "unit"
2026-06-21T07:19:09.5630248Z       ],
2026-06-21T07:19:09.5630358Z       "stages": {
2026-06-21T07:19:09.5630453Z         "doc": {
2026-06-21T07:19:09.5630562Z           "complete": true,
2026-06-21T07:19:09.5630663Z           "evidence": [
2026-06-21T07:19:09.5630764Z             {
2026-06-21T07:19:09.5630877Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.5630988Z               "line": 490
2026-06-21T07:19:09.5631083Z             }
2026-06-21T07:19:09.5631186Z           ]
2026-06-21T07:19:09.5631290Z         },
2026-06-21T07:19:09.5631391Z         "impl": {
2026-06-21T07:19:09.5631494Z           "complete": true,
2026-06-21T07:19:09.5631598Z           "evidence": [
2026-06-21T07:19:09.5631704Z             {
2026-06-21T07:19:09.5631832Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.5631941Z               "line": 505
2026-06-21T07:19:09.5632043Z             },
2026-06-21T07:19:09.5632147Z             {
2026-06-21T07:19:09.5632276Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.5632381Z               "line": 87
2026-06-21T07:19:09.5632586Z             },
2026-06-21T07:19:09.5632686Z             {
2026-06-21T07:19:09.5632847Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5632954Z               "line": 81
2026-06-21T07:19:09.5633052Z             },
2026-06-21T07:19:09.5633240Z             {
2026-06-21T07:19:09.5633390Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5633491Z               "line": 166
2026-06-21T07:19:09.5633588Z             },
2026-06-21T07:19:09.5633692Z             {
2026-06-21T07:19:09.5633821Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5633922Z               "line": 1645
2026-06-21T07:19:09.5634025Z             }
2026-06-21T07:19:09.5634129Z           ]
2026-06-21T07:19:09.5634225Z         },
2026-06-21T07:19:09.5634331Z         "int": {
2026-06-21T07:19:09.5634453Z           "complete": false,
2026-06-21T07:19:09.5634564Z           "evidence": []
2026-06-21T07:19:09.5634664Z         },
2026-06-21T07:19:09.5634768Z         "unit": {
2026-06-21T07:19:09.5634869Z           "complete": true,
2026-06-21T07:19:09.5634984Z           "evidence": [
2026-06-21T07:19:09.5635078Z             {
2026-06-21T07:19:09.5635213Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.5635317Z               "line": 623
2026-06-21T07:19:09.5635422Z             },
2026-06-21T07:19:09.5635523Z             {
2026-06-21T07:19:09.5635665Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.5635765Z               "line": 212
2026-06-21T07:19:09.5635871Z             },
2026-06-21T07:19:09.5635965Z             {
2026-06-21T07:19:09.5636094Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.5636204Z               "line": 307
2026-06-21T07:19:09.5636303Z             },
2026-06-21T07:19:09.5636407Z             {
2026-06-21T07:19:09.5636535Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5636644Z               "line": 7724
2026-06-21T07:19:09.5636749Z             },
2026-06-21T07:19:09.5636845Z             {
2026-06-21T07:19:09.5636972Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5637077Z               "line": 7751
2026-06-21T07:19:09.5637183Z             }
2026-06-21T07:19:09.5637282Z           ]
2026-06-21T07:19:09.5637383Z         }
2026-06-21T07:19:09.5637483Z       }
2026-06-21T07:19:09.5637587Z     },
2026-06-21T07:19:09.5637688Z     {
2026-06-21T07:19:09.5637788Z       "id": "REQ-FRONT-1",
2026-06-21T07:19:09.5637998Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T07:19:09.5638117Z       "requiredStages": [],
2026-06-21T07:19:09.5638222Z       "stages": {
2026-06-21T07:19:09.5638322Z         "doc": {
2026-06-21T07:19:09.5638432Z           "complete": false,
2026-06-21T07:19:09.5638551Z           "evidence": []
2026-06-21T07:19:09.5638652Z         },
2026-06-21T07:19:09.5638761Z         "impl": {
2026-06-21T07:19:09.5638880Z           "complete": false,
2026-06-21T07:19:09.5639062Z           "evidence": []
2026-06-21T07:19:09.5639166Z         },
2026-06-21T07:19:09.5639265Z         "int": {
2026-06-21T07:19:09.5639379Z           "complete": false,
2026-06-21T07:19:09.5639487Z           "evidence": []
2026-06-21T07:19:09.5639591Z         },
2026-06-21T07:19:09.5639687Z         "unit": {
2026-06-21T07:19:09.5639797Z           "complete": false,
2026-06-21T07:19:09.5639901Z           "evidence": []
2026-06-21T07:19:09.5640002Z         }
2026-06-21T07:19:09.5640107Z       }
2026-06-21T07:19:09.5640206Z     },
2026-06-21T07:19:09.5640308Z     {
2026-06-21T07:19:09.5640441Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T07:19:09.5646025Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T07:19:09.5646359Z       "requiredStages": [
2026-06-21T07:19:09.5646464Z         "int"
2026-06-21T07:19:09.5646568Z       ],
2026-06-21T07:19:09.5646674Z       "stages": {
2026-06-21T07:19:09.5646774Z         "doc": {
2026-06-21T07:19:09.5646882Z           "complete": false,
2026-06-21T07:19:09.5646987Z           "evidence": []
2026-06-21T07:19:09.5647091Z         },
2026-06-21T07:19:09.5647189Z         "impl": {
2026-06-21T07:19:09.5647294Z           "complete": false,
2026-06-21T07:19:09.5647405Z           "evidence": []
2026-06-21T07:19:09.5647504Z         },
2026-06-21T07:19:09.5647609Z         "int": {
2026-06-21T07:19:09.5647714Z           "complete": true,
2026-06-21T07:19:09.5647837Z           "evidence": [
2026-06-21T07:19:09.5647943Z             {
2026-06-21T07:19:09.5648096Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T07:19:09.5648200Z               "line": 300
2026-06-21T07:19:09.5648297Z             }
2026-06-21T07:19:09.5648401Z           ]
2026-06-21T07:19:09.5648500Z         },
2026-06-21T07:19:09.5648611Z         "unit": {
2026-06-21T07:19:09.5648725Z           "complete": false,
2026-06-21T07:19:09.5648830Z           "evidence": []
2026-06-21T07:19:09.5649039Z         }
2026-06-21T07:19:09.5649135Z       }
2026-06-21T07:19:09.5649241Z     },
2026-06-21T07:19:09.5649340Z     {
2026-06-21T07:19:09.5649474Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T07:19:09.5652103Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T07:19:09.5652241Z       "requiredStages": [
2026-06-21T07:19:09.5652339Z         "impl",
2026-06-21T07:19:09.5652444Z         "unit",
2026-06-21T07:19:09.5652548Z         "int"
2026-06-21T07:19:09.5652647Z       ],
2026-06-21T07:19:09.5652752Z       "stages": {
2026-06-21T07:19:09.5652853Z         "doc": {
2026-06-21T07:19:09.5653091Z           "complete": false,
2026-06-21T07:19:09.5653191Z           "evidence": []
2026-06-21T07:19:09.5653300Z         },
2026-06-21T07:19:09.5653406Z         "impl": {
2026-06-21T07:19:09.5653520Z           "complete": true,
2026-06-21T07:19:09.5653620Z           "evidence": [
2026-06-21T07:19:09.5653726Z             {
2026-06-21T07:19:09.5653963Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5654064Z               "line": 257
2026-06-21T07:19:09.5654168Z             }
2026-06-21T07:19:09.5654259Z           ]
2026-06-21T07:19:09.5654365Z         },
2026-06-21T07:19:09.5654464Z         "int": {
2026-06-21T07:19:09.5654578Z           "complete": true,
2026-06-21T07:19:09.5654680Z           "evidence": [
2026-06-21T07:19:09.5654774Z             {
2026-06-21T07:19:09.5654941Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T07:19:09.5655047Z               "line": 93
2026-06-21T07:19:09.5655150Z             }
2026-06-21T07:19:09.5655249Z           ]
2026-06-21T07:19:09.5655345Z         },
2026-06-21T07:19:09.5655456Z         "unit": {
2026-06-21T07:19:09.5655564Z           "complete": true,
2026-06-21T07:19:09.5655669Z           "evidence": [
2026-06-21T07:19:09.5655770Z             {
2026-06-21T07:19:09.5655902Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5656018Z               "line": 802
2026-06-21T07:19:09.5656128Z             },
2026-06-21T07:19:09.5656227Z             {
2026-06-21T07:19:09.5656366Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5656475Z               "line": 824
2026-06-21T07:19:09.5656570Z             },
2026-06-21T07:19:09.5656671Z             {
2026-06-21T07:19:09.5656804Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5656905Z               "line": 855
2026-06-21T07:19:09.5657010Z             }
2026-06-21T07:19:09.5657119Z           ]
2026-06-21T07:19:09.5657219Z         }
2026-06-21T07:19:09.5657315Z       }
2026-06-21T07:19:09.5657418Z     },
2026-06-21T07:19:09.5657513Z     {
2026-06-21T07:19:09.5657656Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T07:19:09.5660290Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T07:19:09.5660409Z       "requiredStages": [
2026-06-21T07:19:09.5660510Z         "doc",
2026-06-21T07:19:09.5660607Z         "impl",
2026-06-21T07:19:09.5660706Z         "unit",
2026-06-21T07:19:09.5660813Z         "int"
2026-06-21T07:19:09.5660908Z       ],
2026-06-21T07:19:09.5661012Z       "stages": {
2026-06-21T07:19:09.5661119Z         "doc": {
2026-06-21T07:19:09.5661237Z           "complete": true,
2026-06-21T07:19:09.5661350Z           "evidence": [
2026-06-21T07:19:09.5661452Z             {
2026-06-21T07:19:09.5661575Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5661680Z               "line": 333
2026-06-21T07:19:09.5661781Z             }
2026-06-21T07:19:09.5661876Z           ]
2026-06-21T07:19:09.5661966Z         },
2026-06-21T07:19:09.5662072Z         "impl": {
2026-06-21T07:19:09.5662181Z           "complete": true,
2026-06-21T07:19:09.5662295Z           "evidence": [
2026-06-21T07:19:09.5662401Z             {
2026-06-21T07:19:09.5662552Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5662754Z               "line": 494
2026-06-21T07:19:09.5662857Z             },
2026-06-21T07:19:09.5662956Z             {
2026-06-21T07:19:09.5663104Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5663208Z               "line": 499
2026-06-21T07:19:09.5663404Z             },
2026-06-21T07:19:09.5663503Z             {
2026-06-21T07:19:09.5663651Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5663751Z               "line": 874
2026-06-21T07:19:09.5663860Z             },
2026-06-21T07:19:09.5663956Z             {
2026-06-21T07:19:09.5664104Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5664208Z               "line": 915
2026-06-21T07:19:09.5664310Z             },
2026-06-21T07:19:09.5664414Z             {
2026-06-21T07:19:09.5664542Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5664643Z               "line": 926
2026-06-21T07:19:09.5664743Z             },
2026-06-21T07:19:09.5664852Z             {
2026-06-21T07:19:09.5664991Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.5665100Z               "line": 358
2026-06-21T07:19:09.5665201Z             }
2026-06-21T07:19:09.5665302Z           ]
2026-06-21T07:19:09.5665405Z         },
2026-06-21T07:19:09.5665511Z         "int": {
2026-06-21T07:19:09.5665616Z           "complete": true,
2026-06-21T07:19:09.5665724Z           "evidence": [
2026-06-21T07:19:09.5665828Z             {
2026-06-21T07:19:09.5665987Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T07:19:09.5666095Z               "line": 30
2026-06-21T07:19:09.5666206Z             }
2026-06-21T07:19:09.5666297Z           ]
2026-06-21T07:19:09.5666401Z         },
2026-06-21T07:19:09.5666511Z         "unit": {
2026-06-21T07:19:09.5666621Z           "complete": true,
2026-06-21T07:19:09.5666730Z           "evidence": [
2026-06-21T07:19:09.5666825Z             {
2026-06-21T07:19:09.5666973Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5667082Z               "line": 1493
2026-06-21T07:19:09.5667189Z             },
2026-06-21T07:19:09.5667293Z             {
2026-06-21T07:19:09.5667441Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5667546Z               "line": 1518
2026-06-21T07:19:09.5667649Z             },
2026-06-21T07:19:09.5667746Z             {
2026-06-21T07:19:09.5667880Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5667992Z               "line": 1535
2026-06-21T07:19:09.5668097Z             },
2026-06-21T07:19:09.5668193Z             {
2026-06-21T07:19:09.5668338Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5668448Z               "line": 1578
2026-06-21T07:19:09.5668549Z             }
2026-06-21T07:19:09.5668652Z           ]
2026-06-21T07:19:09.5668753Z         }
2026-06-21T07:19:09.5668854Z       }
2026-06-21T07:19:09.5669029Z     },
2026-06-21T07:19:09.5669131Z     {
2026-06-21T07:19:09.5669296Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T07:19:09.5671959Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T07:19:09.5672182Z       "requiredStages": [],
2026-06-21T07:19:09.5672288Z       "stages": {
2026-06-21T07:19:09.5672402Z         "doc": {
2026-06-21T07:19:09.5672512Z           "complete": false,
2026-06-21T07:19:09.5672628Z           "evidence": []
2026-06-21T07:19:09.5672731Z         },
2026-06-21T07:19:09.5672918Z         "impl": {
2026-06-21T07:19:09.5673036Z           "complete": false,
2026-06-21T07:19:09.5673137Z           "evidence": []
2026-06-21T07:19:09.5673242Z         },
2026-06-21T07:19:09.5673347Z         "int": {
2026-06-21T07:19:09.5673451Z           "complete": false,
2026-06-21T07:19:09.5673560Z           "evidence": []
2026-06-21T07:19:09.5673659Z         },
2026-06-21T07:19:09.5673768Z         "unit": {
2026-06-21T07:19:09.5673872Z           "complete": false,
2026-06-21T07:19:09.5673988Z           "evidence": []
2026-06-21T07:19:09.5674082Z         }
2026-06-21T07:19:09.5674187Z       }
2026-06-21T07:19:09.5674293Z     },
2026-06-21T07:19:09.5674387Z     {
2026-06-21T07:19:09.5674546Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T07:19:09.5678344Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T07:19:09.5678482Z       "requiredStages": [
2026-06-21T07:19:09.5678586Z         "impl",
2026-06-21T07:19:09.5678691Z         "unit",
2026-06-21T07:19:09.5678795Z         "int"
2026-06-21T07:19:09.5678893Z       ],
2026-06-21T07:19:09.5679081Z       "stages": {
2026-06-21T07:19:09.5679190Z         "doc": {
2026-06-21T07:19:09.5679308Z           "complete": false,
2026-06-21T07:19:09.5679410Z           "evidence": []
2026-06-21T07:19:09.5679514Z         },
2026-06-21T07:19:09.5679613Z         "impl": {
2026-06-21T07:19:09.5679724Z           "complete": true,
2026-06-21T07:19:09.5679833Z           "evidence": [
2026-06-21T07:19:09.5679943Z             {
2026-06-21T07:19:09.5680095Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5680199Z               "line": 570
2026-06-21T07:19:09.5680297Z             },
2026-06-21T07:19:09.5680396Z             {
2026-06-21T07:19:09.5680538Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5680649Z               "line": 594
2026-06-21T07:19:09.5680748Z             },
2026-06-21T07:19:09.5680853Z             {
2026-06-21T07:19:09.5680988Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5681096Z               "line": 620
2026-06-21T07:19:09.5681197Z             },
2026-06-21T07:19:09.5681298Z             {
2026-06-21T07:19:09.5681444Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5681549Z               "line": 679
2026-06-21T07:19:09.5681653Z             },
2026-06-21T07:19:09.5681751Z             {
2026-06-21T07:19:09.5681890Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.5682094Z               "line": 89
2026-06-21T07:19:09.5682200Z             },
2026-06-21T07:19:09.5682300Z             {
2026-06-21T07:19:09.5682423Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.5682534Z               "line": 134
2026-06-21T07:19:09.5682724Z             }
2026-06-21T07:19:09.5682829Z           ]
2026-06-21T07:19:09.5682916Z         },
2026-06-21T07:19:09.5683025Z         "int": {
2026-06-21T07:19:09.5683129Z           "complete": true,
2026-06-21T07:19:09.5683235Z           "evidence": [
2026-06-21T07:19:09.5683344Z             {
2026-06-21T07:19:09.5683521Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T07:19:09.5683629Z               "line": 20
2026-06-21T07:19:09.5683730Z             }
2026-06-21T07:19:09.5683832Z           ]
2026-06-21T07:19:09.5683930Z         },
2026-06-21T07:19:09.5684030Z         "unit": {
2026-06-21T07:19:09.5684139Z           "complete": true,
2026-06-21T07:19:09.5684247Z           "evidence": [
2026-06-21T07:19:09.5684351Z             {
2026-06-21T07:19:09.5684495Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5684604Z               "line": 1047
2026-06-21T07:19:09.5684713Z             },
2026-06-21T07:19:09.5684810Z             {
2026-06-21T07:19:09.5684956Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.5685057Z               "line": 445
2026-06-21T07:19:09.5685158Z             }
2026-06-21T07:19:09.5685262Z           ]
2026-06-21T07:19:09.5685362Z         }
2026-06-21T07:19:09.5685459Z       }
2026-06-21T07:19:09.5685553Z     },
2026-06-21T07:19:09.5685658Z     {
2026-06-21T07:19:09.5685806Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T07:19:09.5688508Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T07:19:09.5688629Z       "requiredStages": [
2026-06-21T07:19:09.5688737Z         "doc",
2026-06-21T07:19:09.5688837Z         "impl",
2026-06-21T07:19:09.5689029Z         "unit",
2026-06-21T07:19:09.5689127Z         "int"
2026-06-21T07:19:09.5689232Z       ],
2026-06-21T07:19:09.5689336Z       "stages": {
2026-06-21T07:19:09.5689444Z         "doc": {
2026-06-21T07:19:09.5689564Z           "complete": true,
2026-06-21T07:19:09.5689660Z           "evidence": [
2026-06-21T07:19:09.5689759Z             {
2026-06-21T07:19:09.5689893Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5690007Z               "line": 302
2026-06-21T07:19:09.5690107Z             }
2026-06-21T07:19:09.5690208Z           ]
2026-06-21T07:19:09.5690308Z         },
2026-06-21T07:19:09.5690412Z         "impl": {
2026-06-21T07:19:09.5690523Z           "complete": true,
2026-06-21T07:19:09.5690627Z           "evidence": [
2026-06-21T07:19:09.5690732Z             {
2026-06-21T07:19:09.5690880Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.5690989Z               "line": 108
2026-06-21T07:19:09.5691094Z             },
2026-06-21T07:19:09.5691195Z             {
2026-06-21T07:19:09.5691337Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5691443Z               "line": 843
2026-06-21T07:19:09.5691548Z             },
2026-06-21T07:19:09.5691647Z             {
2026-06-21T07:19:09.5691782Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5692013Z               "line": 1043
2026-06-21T07:19:09.5692113Z             },
2026-06-21T07:19:09.5692208Z             {
2026-06-21T07:19:09.5692359Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5692469Z               "line": 23
2026-06-21T07:19:09.5692654Z             },
2026-06-21T07:19:09.5692760Z             {
2026-06-21T07:19:09.5692908Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5693012Z               "line": 113
2026-06-21T07:19:09.5693123Z             },
2026-06-21T07:19:09.5693213Z             {
2026-06-21T07:19:09.5693360Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5693466Z               "line": 158
2026-06-21T07:19:09.5693571Z             },
2026-06-21T07:19:09.5693680Z             {
2026-06-21T07:19:09.5693884Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5694034Z               "line": 218
2026-06-21T07:19:09.5694185Z             },
2026-06-21T07:19:09.5694334Z             {
2026-06-21T07:19:09.5694537Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5694666Z               "line": 261
2026-06-21T07:19:09.5694766Z             },
2026-06-21T07:19:09.5694868Z             {
2026-06-21T07:19:09.5695040Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5695197Z               "line": 275
2026-06-21T07:19:09.5695385Z             },
2026-06-21T07:19:09.5695560Z             {
2026-06-21T07:19:09.5695780Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5695942Z               "line": 320
2026-06-21T07:19:09.5696084Z             },
2026-06-21T07:19:09.5696246Z             {
2026-06-21T07:19:09.5696485Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5696648Z               "line": 347
2026-06-21T07:19:09.5696800Z             },
2026-06-21T07:19:09.5696954Z             {
2026-06-21T07:19:09.5697196Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5697372Z               "line": 359
2026-06-21T07:19:09.5697528Z             },
2026-06-21T07:19:09.5697677Z             {
2026-06-21T07:19:09.5697925Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5698086Z               "line": 373
2026-06-21T07:19:09.5698282Z             },
2026-06-21T07:19:09.5698439Z             {
2026-06-21T07:19:09.5698678Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5698850Z               "line": 400
2026-06-21T07:19:09.5699097Z             },
2026-06-21T07:19:09.5699255Z             {
2026-06-21T07:19:09.5699494Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5699655Z               "line": 643
2026-06-21T07:19:09.5699816Z             },
2026-06-21T07:19:09.5699966Z             {
2026-06-21T07:19:09.5700210Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5700390Z               "line": 989
2026-06-21T07:19:09.5700558Z             },
2026-06-21T07:19:09.5700705Z             {
2026-06-21T07:19:09.5700934Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5701107Z               "line": 295
2026-06-21T07:19:09.5701268Z             },
2026-06-21T07:19:09.5701441Z             {
2026-06-21T07:19:09.5701668Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5701840Z               "line": 1191
2026-06-21T07:19:09.5702008Z             },
2026-06-21T07:19:09.5702160Z             {
2026-06-21T07:19:09.5702395Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5702555Z               "line": 1263
2026-06-21T07:19:09.5702721Z             },
2026-06-21T07:19:09.5702890Z             {
2026-06-21T07:19:09.5703120Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5703300Z               "line": 1275
2026-06-21T07:19:09.5708504Z             },
2026-06-21T07:19:09.5708905Z             {
2026-06-21T07:19:09.5709572Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5709782Z               "line": 1976
2026-06-21T07:19:09.5709914Z             },
2026-06-21T07:19:09.5710035Z             {
2026-06-21T07:19:09.5710229Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5710650Z               "line": 188
2026-06-21T07:19:09.5710775Z             },
2026-06-21T07:19:09.5710898Z             {
2026-06-21T07:19:09.5711075Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5711213Z               "line": 265
2026-06-21T07:19:09.5711318Z             },
2026-06-21T07:19:09.5711442Z             {
2026-06-21T07:19:09.5711624Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5711762Z               "line": 276
2026-06-21T07:19:09.5711880Z             },
2026-06-21T07:19:09.5711991Z             {
2026-06-21T07:19:09.5712167Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5712302Z               "line": 329
2026-06-21T07:19:09.5712424Z             },
2026-06-21T07:19:09.5712543Z             {
2026-06-21T07:19:09.5712720Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5712853Z               "line": 56
2026-06-21T07:19:09.5712974Z             },
2026-06-21T07:19:09.5713110Z             {
2026-06-21T07:19:09.5713286Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5713408Z               "line": 188
2026-06-21T07:19:09.5713532Z             },
2026-06-21T07:19:09.5713657Z             {
2026-06-21T07:19:09.5713827Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T07:19:09.5713967Z               "line": 82
2026-06-21T07:19:09.5714085Z             },
2026-06-21T07:19:09.5714200Z             {
2026-06-21T07:19:09.5714376Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5714509Z               "line": 308
2026-06-21T07:19:09.5714633Z             },
2026-06-21T07:19:09.5714752Z             {
2026-06-21T07:19:09.5714925Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.5715058Z               "line": 424
2026-06-21T07:19:09.5715178Z             },
2026-06-21T07:19:09.5715301Z             {
2026-06-21T07:19:09.5715445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.5715578Z               "line": 2006
2026-06-21T07:19:09.5715686Z             }
2026-06-21T07:19:09.5715810Z           ]
2026-06-21T07:19:09.5715928Z         },
2026-06-21T07:19:09.5716050Z         "int": {
2026-06-21T07:19:09.5716195Z           "complete": true,
2026-06-21T07:19:09.5716313Z           "evidence": [
2026-06-21T07:19:09.5716442Z             {
2026-06-21T07:19:09.5716623Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T07:19:09.5716752Z               "line": 57
2026-06-21T07:19:09.5716881Z             },
2026-06-21T07:19:09.5716999Z             {
2026-06-21T07:19:09.5717167Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T07:19:09.5717300Z               "line": 41
2026-06-21T07:19:09.5717430Z             }
2026-06-21T07:19:09.5717543Z           ]
2026-06-21T07:19:09.5717658Z         },
2026-06-21T07:19:09.5717783Z         "unit": {
2026-06-21T07:19:09.5717920Z           "complete": true,
2026-06-21T07:19:09.5718050Z           "evidence": [
2026-06-21T07:19:09.5718182Z             {
2026-06-21T07:19:09.5718360Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.5718497Z               "line": 532
2026-06-21T07:19:09.5718615Z             },
2026-06-21T07:19:09.5718735Z             {
2026-06-21T07:19:09.5718910Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.5719136Z               "line": 757
2026-06-21T07:19:09.5719259Z             },
2026-06-21T07:19:09.5719389Z             {
2026-06-21T07:19:09.5719568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5719689Z               "line": 1067
2026-06-21T07:19:09.5719817Z             },
2026-06-21T07:19:09.5720065Z             {
2026-06-21T07:19:09.5720246Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5720375Z               "line": 1101
2026-06-21T07:19:09.5720503Z             },
2026-06-21T07:19:09.5720629Z             {
2026-06-21T07:19:09.5720803Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5721058Z               "line": 1143
2026-06-21T07:19:09.5721172Z             },
2026-06-21T07:19:09.5721302Z             {
2026-06-21T07:19:09.5721473Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5721583Z               "line": 1215
2026-06-21T07:19:09.5721693Z             },
2026-06-21T07:19:09.5721787Z             {
2026-06-21T07:19:09.5721932Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5722036Z               "line": 1228
2026-06-21T07:19:09.5722145Z             },
2026-06-21T07:19:09.5722246Z             {
2026-06-21T07:19:09.5722393Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5722508Z               "line": 1251
2026-06-21T07:19:09.5722612Z             },
2026-06-21T07:19:09.5722703Z             {
2026-06-21T07:19:09.5722842Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5722951Z               "line": 1277
2026-06-21T07:19:09.5723060Z             },
2026-06-21T07:19:09.5723167Z             {
2026-06-21T07:19:09.5723308Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5723418Z               "line": 1291
2026-06-21T07:19:09.5723525Z             },
2026-06-21T07:19:09.5723613Z             {
2026-06-21T07:19:09.5723755Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5723861Z               "line": 1315
2026-06-21T07:19:09.5723968Z             },
2026-06-21T07:19:09.5724072Z             {
2026-06-21T07:19:09.5724217Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5724325Z               "line": 1447
2026-06-21T07:19:09.5724430Z             },
2026-06-21T07:19:09.5724536Z             {
2026-06-21T07:19:09.5724674Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5724785Z               "line": 1623
2026-06-21T07:19:09.5724889Z             },
2026-06-21T07:19:09.5724979Z             {
2026-06-21T07:19:09.5725137Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5725246Z               "line": 1678
2026-06-21T07:19:09.5725351Z             },
2026-06-21T07:19:09.5725456Z             {
2026-06-21T07:19:09.5725584Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5725690Z               "line": 1724
2026-06-21T07:19:09.5725795Z             },
2026-06-21T07:19:09.5725894Z             {
2026-06-21T07:19:09.5726034Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5726152Z               "line": 1769
2026-06-21T07:19:09.5726265Z             },
2026-06-21T07:19:09.5726365Z             {
2026-06-21T07:19:09.5726516Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5726630Z               "line": 1813
2026-06-21T07:19:09.5726740Z             },
2026-06-21T07:19:09.5726840Z             {
2026-06-21T07:19:09.5726987Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5727098Z               "line": 1855
2026-06-21T07:19:09.5727197Z             },
2026-06-21T07:19:09.5727302Z             {
2026-06-21T07:19:09.5727441Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5727550Z               "line": 2329
2026-06-21T07:19:09.5727652Z             },
2026-06-21T07:19:09.5727756Z             {
2026-06-21T07:19:09.5727908Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5728019Z               "line": 217
2026-06-21T07:19:09.5728123Z             },
2026-06-21T07:19:09.5728223Z             {
2026-06-21T07:19:09.5728362Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5728552Z               "line": 233
2026-06-21T07:19:09.5728663Z             },
2026-06-21T07:19:09.5728766Z             {
2026-06-21T07:19:09.5728906Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5729104Z               "line": 254
2026-06-21T07:19:09.5729203Z             },
2026-06-21T07:19:09.5729447Z             {
2026-06-21T07:19:09.5729586Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5729696Z               "line": 265
2026-06-21T07:19:09.5729804Z             },
2026-06-21T07:19:09.5729910Z             {
2026-06-21T07:19:09.5730053Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5730162Z               "line": 278
2026-06-21T07:19:09.5730268Z             },
2026-06-21T07:19:09.5730373Z             {
2026-06-21T07:19:09.5730506Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5730612Z               "line": 289
2026-06-21T07:19:09.5730716Z             },
2026-06-21T07:19:09.5730831Z             {
2026-06-21T07:19:09.5730959Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5731077Z               "line": 301
2026-06-21T07:19:09.5731179Z             },
2026-06-21T07:19:09.5731278Z             {
2026-06-21T07:19:09.5731429Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5731539Z               "line": 312
2026-06-21T07:19:09.5731637Z             },
2026-06-21T07:19:09.5731737Z             {
2026-06-21T07:19:09.5731881Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5731995Z               "line": 323
2026-06-21T07:19:09.5732090Z             },
2026-06-21T07:19:09.5732196Z             {
2026-06-21T07:19:09.5732323Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5732434Z               "line": 332
2026-06-21T07:19:09.5732534Z             },
2026-06-21T07:19:09.5732643Z             {
2026-06-21T07:19:09.5732787Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5732896Z               "line": 342
2026-06-21T07:19:09.5733000Z             },
2026-06-21T07:19:09.5733097Z             {
2026-06-21T07:19:09.5733245Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T07:19:09.5733344Z               "line": 358
2026-06-21T07:19:09.5733455Z             },
2026-06-21T07:19:09.5733553Z             {
2026-06-21T07:19:09.5733698Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5733803Z               "line": 758
2026-06-21T07:19:09.5733907Z             },
2026-06-21T07:19:09.5734013Z             {
2026-06-21T07:19:09.5734150Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5734264Z               "line": 794
2026-06-21T07:19:09.5734373Z             },
2026-06-21T07:19:09.5734472Z             {
2026-06-21T07:19:09.5734613Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.5734724Z               "line": 966
2026-06-21T07:19:09.5734819Z             },
2026-06-21T07:19:09.5734919Z             {
2026-06-21T07:19:09.5735058Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T07:19:09.5735172Z               "line": 145
2026-06-21T07:19:09.5735276Z             },
2026-06-21T07:19:09.5735382Z             {
2026-06-21T07:19:09.5735515Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T07:19:09.5735625Z               "line": 224
2026-06-21T07:19:09.5735735Z             },
2026-06-21T07:19:09.5735834Z             {
2026-06-21T07:19:09.5735974Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T07:19:09.5736082Z               "line": 293
2026-06-21T07:19:09.5736192Z             },
2026-06-21T07:19:09.5736294Z             {
2026-06-21T07:19:09.5736440Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T07:19:09.5736555Z               "line": 17
2026-06-21T07:19:09.5736656Z             },
2026-06-21T07:19:09.5736764Z             {
2026-06-21T07:19:09.5736906Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T07:19:09.5737133Z               "line": 104
2026-06-21T07:19:09.5737233Z             }
2026-06-21T07:19:09.5737339Z           ]
2026-06-21T07:19:09.5737443Z         }
2026-06-21T07:19:09.5737543Z       }
2026-06-21T07:19:09.5737649Z     },
2026-06-21T07:19:09.5737743Z     {
2026-06-21T07:19:09.5737963Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T07:19:09.5741347Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T07:19:09.5741510Z       "requiredStages": [
2026-06-21T07:19:09.5741619Z         "doc",
2026-06-21T07:19:09.5741725Z         "impl",
2026-06-21T07:19:09.5741825Z         "unit",
2026-06-21T07:19:09.5741933Z         "int"
2026-06-21T07:19:09.5742033Z       ],
2026-06-21T07:19:09.5742133Z       "stages": {
2026-06-21T07:19:09.5742230Z         "doc": {
2026-06-21T07:19:09.5742355Z           "complete": true,
2026-06-21T07:19:09.5742460Z           "evidence": [
2026-06-21T07:19:09.5742559Z             {
2026-06-21T07:19:09.5742693Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5742813Z               "line": 388
2026-06-21T07:19:09.5742917Z             }
2026-06-21T07:19:09.5743013Z           ]
2026-06-21T07:19:09.5743118Z         },
2026-06-21T07:19:09.5743222Z         "impl": {
2026-06-21T07:19:09.5743338Z           "complete": true,
2026-06-21T07:19:09.5743466Z           "evidence": [
2026-06-21T07:19:09.5743560Z             {
2026-06-21T07:19:09.5743719Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5743828Z               "line": 823
2026-06-21T07:19:09.5743928Z             },
2026-06-21T07:19:09.5744030Z             {
2026-06-21T07:19:09.5744171Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5744282Z               "line": 846
2026-06-21T07:19:09.5744386Z             }
2026-06-21T07:19:09.5744486Z           ]
2026-06-21T07:19:09.5744583Z         },
2026-06-21T07:19:09.5744683Z         "int": {
2026-06-21T07:19:09.5744790Z           "complete": true,
2026-06-21T07:19:09.5744900Z           "evidence": [
2026-06-21T07:19:09.5745000Z             {
2026-06-21T07:19:09.5745160Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.5745274Z               "line": 228
2026-06-21T07:19:09.5745375Z             },
2026-06-21T07:19:09.5745479Z             {
2026-06-21T07:19:09.5745632Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T07:19:09.5745741Z               "line": 468
2026-06-21T07:19:09.5745851Z             }
2026-06-21T07:19:09.5745947Z           ]
2026-06-21T07:19:09.5746047Z         },
2026-06-21T07:19:09.5746146Z         "unit": {
2026-06-21T07:19:09.5746253Z           "complete": true,
2026-06-21T07:19:09.5746362Z           "evidence": [
2026-06-21T07:19:09.5746461Z             {
2026-06-21T07:19:09.5746605Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.5746714Z               "line": 1583
2026-06-21T07:19:09.5746820Z             }
2026-06-21T07:19:09.5746920Z           ]
2026-06-21T07:19:09.5747024Z         }
2026-06-21T07:19:09.5747240Z       }
2026-06-21T07:19:09.5747338Z     },
2026-06-21T07:19:09.5747442Z     {
2026-06-21T07:19:09.5747575Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T07:19:09.5751346Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T07:19:09.5751578Z       "requiredStages": [
2026-06-21T07:19:09.5751689Z         "doc",
2026-06-21T07:19:09.5751788Z         "impl",
2026-06-21T07:19:09.5751892Z         "unit"
2026-06-21T07:19:09.5751989Z       ],
2026-06-21T07:19:09.5752093Z       "stages": {
2026-06-21T07:19:09.5752193Z         "doc": {
2026-06-21T07:19:09.5752309Z           "complete": true,
2026-06-21T07:19:09.5752412Z           "evidence": [
2026-06-21T07:19:09.5752512Z             {
2026-06-21T07:19:09.5752640Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5752758Z               "line": 395
2026-06-21T07:19:09.5752852Z             }
2026-06-21T07:19:09.5752958Z           ]
2026-06-21T07:19:09.5753064Z         },
2026-06-21T07:19:09.5753167Z         "impl": {
2026-06-21T07:19:09.5753282Z           "complete": true,
2026-06-21T07:19:09.5753378Z           "evidence": [
2026-06-21T07:19:09.5753486Z             {
2026-06-21T07:19:09.5753636Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5753735Z               "line": 75
2026-06-21T07:19:09.5753825Z             }
2026-06-21T07:19:09.5753936Z           ]
2026-06-21T07:19:09.5754036Z         },
2026-06-21T07:19:09.5754140Z         "int": {
2026-06-21T07:19:09.5754251Z           "complete": false,
2026-06-21T07:19:09.5754365Z           "evidence": []
2026-06-21T07:19:09.5754459Z         },
2026-06-21T07:19:09.5754566Z         "unit": {
2026-06-21T07:19:09.5754683Z           "complete": true,
2026-06-21T07:19:09.5754784Z           "evidence": [
2026-06-21T07:19:09.5754895Z             {
2026-06-21T07:19:09.5755032Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.5755147Z               "line": 632
2026-06-21T07:19:09.5755243Z             }
2026-06-21T07:19:09.5755345Z           ]
2026-06-21T07:19:09.5755460Z         }
2026-06-21T07:19:09.5755546Z       }
2026-06-21T07:19:09.5755653Z     },
2026-06-21T07:19:09.5755757Z     {
2026-06-21T07:19:09.5755897Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T07:19:09.5756091Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T07:19:09.5756221Z       "requiredStages": [
2026-06-21T07:19:09.5756334Z         "impl",
2026-06-21T07:19:09.5756441Z         "unit"
2026-06-21T07:19:09.5756545Z       ],
2026-06-21T07:19:09.5756654Z       "stages": {
2026-06-21T07:19:09.5756765Z         "doc": {
2026-06-21T07:19:09.5756878Z           "complete": false,
2026-06-21T07:19:09.5757002Z           "evidence": []
2026-06-21T07:19:09.5757109Z         },
2026-06-21T07:19:09.5757207Z         "impl": {
2026-06-21T07:19:09.5757513Z           "complete": true,
2026-06-21T07:19:09.5757613Z           "evidence": [
2026-06-21T07:19:09.5757724Z             {
2026-06-21T07:19:09.5757865Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.5757974Z               "line": 172
2026-06-21T07:19:09.5758079Z             },
2026-06-21T07:19:09.5758258Z             {
2026-06-21T07:19:09.5758406Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.5758511Z               "line": 18
2026-06-21T07:19:09.5758615Z             },
2026-06-21T07:19:09.5758712Z             {
2026-06-21T07:19:09.5758845Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.5759022Z               "line": 100
2026-06-21T07:19:09.5759112Z             }
2026-06-21T07:19:09.5759216Z           ]
2026-06-21T07:19:09.5759312Z         },
2026-06-21T07:19:09.5759417Z         "int": {
2026-06-21T07:19:09.5759521Z           "complete": false,
2026-06-21T07:19:09.5759632Z           "evidence": []
2026-06-21T07:19:09.5759746Z         },
2026-06-21T07:19:09.5759850Z         "unit": {
2026-06-21T07:19:09.5759971Z           "complete": true,
2026-06-21T07:19:09.5760074Z           "evidence": [
2026-06-21T07:19:09.5760179Z             {
2026-06-21T07:19:09.5760329Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.5760446Z               "line": 857
2026-06-21T07:19:09.5760557Z             },
2026-06-21T07:19:09.5760658Z             {
2026-06-21T07:19:09.5760789Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.5760889Z               "line": 161
2026-06-21T07:19:09.5760995Z             },
2026-06-21T07:19:09.5761104Z             {
2026-06-21T07:19:09.5761237Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.5761347Z               "line": 233
2026-06-21T07:19:09.5761447Z             }
2026-06-21T07:19:09.5761552Z           ]
2026-06-21T07:19:09.5761652Z         }
2026-06-21T07:19:09.5761752Z       }
2026-06-21T07:19:09.5761848Z     },
2026-06-21T07:19:09.5761953Z     {
2026-06-21T07:19:09.5762095Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T07:19:09.5762559Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T07:19:09.5762691Z       "requiredStages": [
2026-06-21T07:19:09.5762797Z         "impl",
2026-06-21T07:19:09.5762907Z         "unit"
2026-06-21T07:19:09.5763015Z       ],
2026-06-21T07:19:09.5763119Z       "stages": {
2026-06-21T07:19:09.5763224Z         "doc": {
2026-06-21T07:19:09.5763337Z           "complete": true,
2026-06-21T07:19:09.5763441Z           "evidence": [
2026-06-21T07:19:09.5763542Z             {
2026-06-21T07:19:09.5763675Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5763784Z               "line": 220
2026-06-21T07:19:09.5763886Z             }
2026-06-21T07:19:09.5763990Z           ]
2026-06-21T07:19:09.5764095Z         },
2026-06-21T07:19:09.5764201Z         "impl": {
2026-06-21T07:19:09.5764314Z           "complete": true,
2026-06-21T07:19:09.5764429Z           "evidence": [
2026-06-21T07:19:09.5764534Z             {
2026-06-21T07:19:09.5764690Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.5764796Z               "line": 316
2026-06-21T07:19:09.5764905Z             },
2026-06-21T07:19:09.5765005Z             {
2026-06-21T07:19:09.5765150Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.5765258Z               "line": 356
2026-06-21T07:19:09.5765368Z             },
2026-06-21T07:19:09.5765474Z             {
2026-06-21T07:19:09.5765621Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.5765722Z               "line": 578
2026-06-21T07:19:09.5765831Z             },
2026-06-21T07:19:09.5765929Z             {
2026-06-21T07:19:09.5766082Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.5766190Z               "line": 77
2026-06-21T07:19:09.5766429Z             }
2026-06-21T07:19:09.5766538Z           ]
2026-06-21T07:19:09.5766637Z         },
2026-06-21T07:19:09.5766748Z         "int": {
2026-06-21T07:19:09.5766862Z           "complete": false,
2026-06-21T07:19:09.5766976Z           "evidence": []
2026-06-21T07:19:09.5767082Z         },
2026-06-21T07:19:09.5767281Z         "unit": {
2026-06-21T07:19:09.5767402Z           "complete": true,
2026-06-21T07:19:09.5767511Z           "evidence": [
2026-06-21T07:19:09.5767620Z             {
2026-06-21T07:19:09.5767763Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.5767877Z               "line": 747
2026-06-21T07:19:09.5767978Z             },
2026-06-21T07:19:09.5768083Z             {
2026-06-21T07:19:09.5768235Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.5768332Z               "line": 785
2026-06-21T07:19:09.5768439Z             },
2026-06-21T07:19:09.5768539Z             {
2026-06-21T07:19:09.5768668Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.5768785Z               "line": 166
2026-06-21T07:19:09.5768889Z             }
2026-06-21T07:19:09.5769067Z           ]
2026-06-21T07:19:09.5769161Z         }
2026-06-21T07:19:09.5769257Z       }
2026-06-21T07:19:09.5769357Z     },
2026-06-21T07:19:09.5769457Z     {
2026-06-21T07:19:09.5769606Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T07:19:09.5770211Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T07:19:09.5770329Z       "requiredStages": [
2026-06-21T07:19:09.5770434Z         "impl",
2026-06-21T07:19:09.5770526Z         "unit"
2026-06-21T07:19:09.5770635Z       ],
2026-06-21T07:19:09.5770730Z       "stages": {
2026-06-21T07:19:09.5770836Z         "doc": {
2026-06-21T07:19:09.5770945Z           "complete": false,
2026-06-21T07:19:09.5771050Z           "evidence": []
2026-06-21T07:19:09.5771160Z         },
2026-06-21T07:19:09.5771260Z         "impl": {
2026-06-21T07:19:09.5771368Z           "complete": true,
2026-06-21T07:19:09.5771478Z           "evidence": [
2026-06-21T07:19:09.5771579Z             {
2026-06-21T07:19:09.5771735Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T07:19:09.5771851Z               "line": 22
2026-06-21T07:19:09.5771941Z             },
2026-06-21T07:19:09.5772045Z             {
2026-06-21T07:19:09.5772175Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.5772284Z               "line": 487
2026-06-21T07:19:09.5772388Z             },
2026-06-21T07:19:09.5772490Z             {
2026-06-21T07:19:09.5772636Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T07:19:09.5772747Z               "line": 17
2026-06-21T07:19:09.5772856Z             },
2026-06-21T07:19:09.5772961Z             {
2026-06-21T07:19:09.5773096Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T07:19:09.5773209Z               "line": 147
2026-06-21T07:19:09.5773309Z             },
2026-06-21T07:19:09.5773415Z             {
2026-06-21T07:19:09.5773561Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5773675Z               "line": 226
2026-06-21T07:19:09.5773780Z             },
2026-06-21T07:19:09.5773873Z             {
2026-06-21T07:19:09.5774030Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5774141Z               "line": 251
2026-06-21T07:19:09.5774250Z             },
2026-06-21T07:19:09.5774345Z             {
2026-06-21T07:19:09.5774503Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5774611Z               "line": 277
2026-06-21T07:19:09.5774713Z             },
2026-06-21T07:19:09.5774817Z             {
2026-06-21T07:19:09.5774960Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.5775070Z               "line": 124
2026-06-21T07:19:09.5775175Z             },
2026-06-21T07:19:09.5775395Z             {
2026-06-21T07:19:09.5775547Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.5775648Z               "line": 224
2026-06-21T07:19:09.5775752Z             }
2026-06-21T07:19:09.5775843Z           ]
2026-06-21T07:19:09.5775953Z         },
2026-06-21T07:19:09.5776147Z         "int": {
2026-06-21T07:19:09.5776263Z           "complete": false,
2026-06-21T07:19:09.5776377Z           "evidence": []
2026-06-21T07:19:09.5776480Z         },
2026-06-21T07:19:09.5776594Z         "unit": {
2026-06-21T07:19:09.5776708Z           "complete": true,
2026-06-21T07:19:09.5776825Z           "evidence": [
2026-06-21T07:19:09.5776926Z             {
2026-06-21T07:19:09.5777084Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T07:19:09.5777198Z               "line": 63
2026-06-21T07:19:09.5777294Z             },
2026-06-21T07:19:09.5777403Z             {
2026-06-21T07:19:09.5777551Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T07:19:09.5777666Z               "line": 73
2026-06-21T07:19:09.5777770Z             },
2026-06-21T07:19:09.5777865Z             {
2026-06-21T07:19:09.5778018Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T07:19:09.5778122Z               "line": 85
2026-06-21T07:19:09.5778224Z             },
2026-06-21T07:19:09.5778333Z             {
2026-06-21T07:19:09.5778476Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.5778582Z               "line": 346
2026-06-21T07:19:09.5778680Z             },
2026-06-21T07:19:09.5778786Z             {
2026-06-21T07:19:09.5778920Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T07:19:09.5779099Z               "line": 281
2026-06-21T07:19:09.5779194Z             },
2026-06-21T07:19:09.5779298Z             {
2026-06-21T07:19:09.5779444Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T07:19:09.5779555Z               "line": 322
2026-06-21T07:19:09.5779660Z             },
2026-06-21T07:19:09.5779769Z             {
2026-06-21T07:19:09.5779917Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T07:19:09.5780026Z               "line": 360
2026-06-21T07:19:09.5780128Z             },
2026-06-21T07:19:09.5780232Z             {
2026-06-21T07:19:09.5780374Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.5780500Z               "line": 688
2026-06-21T07:19:09.5780599Z             },
2026-06-21T07:19:09.5780694Z             {
2026-06-21T07:19:09.5780838Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.5780947Z               "line": 397
2026-06-21T07:19:09.5781057Z             },
2026-06-21T07:19:09.5781158Z             {
2026-06-21T07:19:09.5781304Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.5781411Z               "line": 440
2026-06-21T07:19:09.5781519Z             }
2026-06-21T07:19:09.5781610Z           ]
2026-06-21T07:19:09.5781707Z         }
2026-06-21T07:19:09.5781820Z       }
2026-06-21T07:19:09.5781919Z     },
2026-06-21T07:19:09.5782024Z     {
2026-06-21T07:19:09.5782144Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T07:19:09.5782396Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T07:19:09.5782515Z       "requiredStages": [
2026-06-21T07:19:09.5782615Z         "impl",
2026-06-21T07:19:09.5782726Z         "unit"
2026-06-21T07:19:09.5782826Z       ],
2026-06-21T07:19:09.5782934Z       "stages": {
2026-06-21T07:19:09.5783040Z         "doc": {
2026-06-21T07:19:09.5783154Z           "complete": false,
2026-06-21T07:19:09.5783263Z           "evidence": []
2026-06-21T07:19:09.5783365Z         },
2026-06-21T07:19:09.5783473Z         "impl": {
2026-06-21T07:19:09.5783587Z           "complete": true,
2026-06-21T07:19:09.5783708Z           "evidence": [
2026-06-21T07:19:09.5783802Z             {
2026-06-21T07:19:09.5783946Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T07:19:09.5784055Z               "line": 169
2026-06-21T07:19:09.5784268Z             }
2026-06-21T07:19:09.5784377Z           ]
2026-06-21T07:19:09.5784481Z         },
2026-06-21T07:19:09.5784590Z         "int": {
2026-06-21T07:19:09.5784701Z           "complete": true,
2026-06-21T07:19:09.5784810Z           "evidence": [
2026-06-21T07:19:09.5784905Z             {
2026-06-21T07:19:09.5785167Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T07:19:09.5785283Z               "line": 44
2026-06-21T07:19:09.5785378Z             },
2026-06-21T07:19:09.5785482Z             {
2026-06-21T07:19:09.5785621Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T07:19:09.5785735Z               "line": 66
2026-06-21T07:19:09.5785830Z             }
2026-06-21T07:19:09.5785931Z           ]
2026-06-21T07:19:09.5786026Z         },
2026-06-21T07:19:09.5786130Z         "unit": {
2026-06-21T07:19:09.5786241Z           "complete": true,
2026-06-21T07:19:09.5786350Z           "evidence": [
2026-06-21T07:19:09.5786459Z             {
2026-06-21T07:19:09.5786608Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T07:19:09.5786722Z               "line": 186
2026-06-21T07:19:09.5786827Z             },
2026-06-21T07:19:09.5786928Z             {
2026-06-21T07:19:09.5787073Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T07:19:09.5787188Z               "line": 238
2026-06-21T07:19:09.5787296Z             },
2026-06-21T07:19:09.5787395Z             {
2026-06-21T07:19:09.5787539Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T07:19:09.5787644Z               "line": 266
2026-06-21T07:19:09.5787743Z             }
2026-06-21T07:19:09.5787849Z           ]
2026-06-21T07:19:09.5787954Z         }
2026-06-21T07:19:09.5788058Z       }
2026-06-21T07:19:09.5788154Z     },
2026-06-21T07:19:09.5788259Z     {
2026-06-21T07:19:09.5788411Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T07:19:09.5792879Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T07:19:09.5793037Z       "requiredStages": [],
2026-06-21T07:19:09.5793141Z       "stages": {
2026-06-21T07:19:09.5793252Z         "doc": {
2026-06-21T07:19:09.5793366Z           "complete": false,
2026-06-21T07:19:09.5793475Z           "evidence": []
2026-06-21T07:19:09.5793567Z         },
2026-06-21T07:19:09.5793666Z         "impl": {
2026-06-21T07:19:09.5793780Z           "complete": false,
2026-06-21T07:19:09.5793886Z           "evidence": []
2026-06-21T07:19:09.5793995Z         },
2026-06-21T07:19:09.5794100Z         "int": {
2026-06-21T07:19:09.5794206Z           "complete": false,
2026-06-21T07:19:09.5794315Z           "evidence": []
2026-06-21T07:19:09.5794419Z         },
2026-06-21T07:19:09.5794625Z         "unit": {
2026-06-21T07:19:09.5794762Z           "complete": false,
2026-06-21T07:19:09.5794886Z           "evidence": []
2026-06-21T07:19:09.5794979Z         }
2026-06-21T07:19:09.5795074Z       }
2026-06-21T07:19:09.5795174Z     },
2026-06-21T07:19:09.5795266Z     {
2026-06-21T07:19:09.5795518Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T07:19:09.5810099Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T07:19:09.5810524Z       "requiredStages": [
2026-06-21T07:19:09.5810629Z         "doc",
2026-06-21T07:19:09.5810737Z         "impl",
2026-06-21T07:19:09.5810827Z         "unit",
2026-06-21T07:19:09.5810932Z         "int"
2026-06-21T07:19:09.5811035Z       ],
2026-06-21T07:19:09.5811140Z       "stages": {
2026-06-21T07:19:09.5811255Z         "doc": {
2026-06-21T07:19:09.5811364Z           "complete": true,
2026-06-21T07:19:09.5811468Z           "evidence": [
2026-06-21T07:19:09.5811575Z             {
2026-06-21T07:19:09.5811721Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5811832Z               "line": 468
2026-06-21T07:19:09.5811936Z             }
2026-06-21T07:19:09.5812045Z           ]
2026-06-21T07:19:09.5812142Z         },
2026-06-21T07:19:09.5812241Z         "impl": {
2026-06-21T07:19:09.5812355Z           "complete": true,
2026-06-21T07:19:09.5812471Z           "evidence": [
2026-06-21T07:19:09.5812575Z             {
2026-06-21T07:19:09.5812728Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5812838Z               "line": 342
2026-06-21T07:19:09.5812942Z             },
2026-06-21T07:19:09.5813038Z             {
2026-06-21T07:19:09.5813195Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.5813314Z               "line": 1188
2026-06-21T07:19:09.5813416Z             },
2026-06-21T07:19:09.5813524Z             {
2026-06-21T07:19:09.5819724Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5819891Z               "line": 763
2026-06-21T07:19:09.5819986Z             }
2026-06-21T07:19:09.5820097Z           ]
2026-06-21T07:19:09.5820192Z         },
2026-06-21T07:19:09.5820301Z         "int": {
2026-06-21T07:19:09.5820426Z           "complete": true,
2026-06-21T07:19:09.5820549Z           "evidence": [
2026-06-21T07:19:09.5820654Z             {
2026-06-21T07:19:09.5820818Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.5820954Z               "line": 1163
2026-06-21T07:19:09.5821061Z             },
2026-06-21T07:19:09.5821156Z             {
2026-06-21T07:19:09.5821320Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.5821431Z               "line": 1264
2026-06-21T07:19:09.5821548Z             },
2026-06-21T07:19:09.5821647Z             {
2026-06-21T07:19:09.5821801Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.5821910Z               "line": 1169
2026-06-21T07:19:09.5822024Z             }
2026-06-21T07:19:09.5822125Z           ]
2026-06-21T07:19:09.5822224Z         },
2026-06-21T07:19:09.5822334Z         "unit": {
2026-06-21T07:19:09.5822444Z           "complete": true,
2026-06-21T07:19:09.5822558Z           "evidence": [
2026-06-21T07:19:09.5822663Z             {
2026-06-21T07:19:09.5822811Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5822930Z               "line": 2777
2026-06-21T07:19:09.5823178Z             }
2026-06-21T07:19:09.5823283Z           ]
2026-06-21T07:19:09.5823389Z         }
2026-06-21T07:19:09.5823497Z       }
2026-06-21T07:19:09.5823593Z     },
2026-06-21T07:19:09.5823689Z     {
2026-06-21T07:19:09.5823826Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T07:19:09.5824413Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T07:19:09.5824526Z       "requiredStages": [
2026-06-21T07:19:09.5824627Z         "impl",
2026-06-21T07:19:09.5824737Z         "unit",
2026-06-21T07:19:09.5824840Z         "int"
2026-06-21T07:19:09.5824947Z       ],
2026-06-21T07:19:09.5825061Z       "stages": {
2026-06-21T07:19:09.5825165Z         "doc": {
2026-06-21T07:19:09.5825280Z           "complete": false,
2026-06-21T07:19:09.5825389Z           "evidence": []
2026-06-21T07:19:09.5825499Z         },
2026-06-21T07:19:09.5825605Z         "impl": {
2026-06-21T07:19:09.5825723Z           "complete": true,
2026-06-21T07:19:09.5825833Z           "evidence": [
2026-06-21T07:19:09.5825934Z             {
2026-06-21T07:19:09.5826105Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5826216Z               "line": 178
2026-06-21T07:19:09.5826333Z             },
2026-06-21T07:19:09.5826433Z             {
2026-06-21T07:19:09.5826595Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5826716Z               "line": 226
2026-06-21T07:19:09.5826821Z             },
2026-06-21T07:19:09.5826927Z             {
2026-06-21T07:19:09.5827069Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.5827184Z               "line": 79
2026-06-21T07:19:09.5827289Z             },
2026-06-21T07:19:09.5827393Z             {
2026-06-21T07:19:09.5827533Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.5827642Z               "line": 52
2026-06-21T07:19:09.5827746Z             },
2026-06-21T07:19:09.5827857Z             {
2026-06-21T07:19:09.5828004Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.5828109Z               "line": 263
2026-06-21T07:19:09.5828219Z             },
2026-06-21T07:19:09.5828333Z             {
2026-06-21T07:19:09.5828482Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5828594Z               "line": 27
2026-06-21T07:19:09.5828695Z             },
2026-06-21T07:19:09.5828797Z             {
2026-06-21T07:19:09.5829039Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5829164Z               "line": 79
2026-06-21T07:19:09.5829290Z             },
2026-06-21T07:19:09.5829391Z             {
2026-06-21T07:19:09.5829537Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5829645Z               "line": 102
2026-06-21T07:19:09.5829760Z             },
2026-06-21T07:19:09.5829870Z             {
2026-06-21T07:19:09.5830022Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.5830137Z               "line": 116
2026-06-21T07:19:09.5830241Z             }
2026-06-21T07:19:09.5830352Z           ]
2026-06-21T07:19:09.5830456Z         },
2026-06-21T07:19:09.5830570Z         "int": {
2026-06-21T07:19:09.5830690Z           "complete": true,
2026-06-21T07:19:09.5830809Z           "evidence": [
2026-06-21T07:19:09.5830909Z             {
2026-06-21T07:19:09.5831072Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T07:19:09.5831181Z               "line": 43
2026-06-21T07:19:09.5831286Z             }
2026-06-21T07:19:09.5831397Z           ]
2026-06-21T07:19:09.5831495Z         },
2026-06-21T07:19:09.5831591Z         "unit": {
2026-06-21T07:19:09.5831712Z           "complete": true,
2026-06-21T07:19:09.5831819Z           "evidence": [
2026-06-21T07:19:09.5831928Z             {
2026-06-21T07:19:09.5832075Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5832193Z               "line": 678
2026-06-21T07:19:09.5832409Z             },
2026-06-21T07:19:09.5832517Z             {
2026-06-21T07:19:09.5832666Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.5832775Z               "line": 495
2026-06-21T07:19:09.5832870Z             },
2026-06-21T07:19:09.5832976Z             {
2026-06-21T07:19:09.5833233Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5833352Z               "line": 124
2026-06-21T07:19:09.5833452Z             },
2026-06-21T07:19:09.5833562Z             {
2026-06-21T07:19:09.5833705Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5833819Z               "line": 143
2026-06-21T07:19:09.5833921Z             },
2026-06-21T07:19:09.5834029Z             {
2026-06-21T07:19:09.5834173Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5834278Z               "line": 160
2026-06-21T07:19:09.5834386Z             },
2026-06-21T07:19:09.5834483Z             {
2026-06-21T07:19:09.5834635Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5834743Z               "line": 187
2026-06-21T07:19:09.5834853Z             },
2026-06-21T07:19:09.5834964Z             {
2026-06-21T07:19:09.5835105Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T07:19:09.5835211Z               "line": 206
2026-06-21T07:19:09.5835321Z             },
2026-06-21T07:19:09.5835424Z             {
2026-06-21T07:19:09.5835564Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.5835668Z               "line": 229
2026-06-21T07:19:09.5835778Z             }
2026-06-21T07:19:09.5835888Z           ]
2026-06-21T07:19:09.5835997Z         }
2026-06-21T07:19:09.5836098Z       }
2026-06-21T07:19:09.5836203Z     },
2026-06-21T07:19:09.5836303Z     {
2026-06-21T07:19:09.5836466Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T07:19:09.5837178Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T07:19:09.5837286Z       "requiredStages": [
2026-06-21T07:19:09.5837391Z         "impl",
2026-06-21T07:19:09.5837501Z         "unit"
2026-06-21T07:19:09.5837610Z       ],
2026-06-21T07:19:09.5837715Z       "stages": {
2026-06-21T07:19:09.5837826Z         "doc": {
2026-06-21T07:19:09.5837948Z           "complete": false,
2026-06-21T07:19:09.5838059Z           "evidence": []
2026-06-21T07:19:09.5838168Z         },
2026-06-21T07:19:09.5838277Z         "impl": {
2026-06-21T07:19:09.5838388Z           "complete": true,
2026-06-21T07:19:09.5838502Z           "evidence": [
2026-06-21T07:19:09.5838606Z             {
2026-06-21T07:19:09.5838765Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5838869Z               "line": 1222
2026-06-21T07:19:09.5839056Z             },
2026-06-21T07:19:09.5839155Z             {
2026-06-21T07:19:09.5839329Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.5839442Z               "line": 1476
2026-06-21T07:19:09.5839532Z             }
2026-06-21T07:19:09.5839638Z           ]
2026-06-21T07:19:09.5839738Z         },
2026-06-21T07:19:09.5839846Z         "int": {
2026-06-21T07:19:09.5839970Z           "complete": false,
2026-06-21T07:19:09.5840083Z           "evidence": []
2026-06-21T07:19:09.5840201Z         },
2026-06-21T07:19:09.5840301Z         "unit": {
2026-06-21T07:19:09.5840421Z           "complete": true,
2026-06-21T07:19:09.5840530Z           "evidence": [
2026-06-21T07:19:09.5840641Z             {
2026-06-21T07:19:09.5840792Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T07:19:09.5840912Z               "line": 161
2026-06-21T07:19:09.5841017Z             }
2026-06-21T07:19:09.5841121Z           ]
2026-06-21T07:19:09.5841241Z         }
2026-06-21T07:19:09.5841346Z       }
2026-06-21T07:19:09.5841450Z     },
2026-06-21T07:19:09.5841551Z     {
2026-06-21T07:19:09.5841832Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T07:19:09.5843731Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T07:19:09.5843950Z       "requiredStages": [
2026-06-21T07:19:09.5844060Z         "impl",
2026-06-21T07:19:09.5844161Z         "unit"
2026-06-21T07:19:09.5844255Z       ],
2026-06-21T07:19:09.5844355Z       "stages": {
2026-06-21T07:19:09.5844452Z         "doc": {
2026-06-21T07:19:09.5844560Z           "complete": false,
2026-06-21T07:19:09.5844680Z           "evidence": []
2026-06-21T07:19:09.5844786Z         },
2026-06-21T07:19:09.5844898Z         "impl": {
2026-06-21T07:19:09.5845004Z           "complete": true,
2026-06-21T07:19:09.5845110Z           "evidence": [
2026-06-21T07:19:09.5845218Z             {
2026-06-21T07:19:09.5845385Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.5845495Z               "line": 257
2026-06-21T07:19:09.5845590Z             }
2026-06-21T07:19:09.5845689Z           ]
2026-06-21T07:19:09.5845790Z         },
2026-06-21T07:19:09.5845899Z         "int": {
2026-06-21T07:19:09.5846019Z           "complete": false,
2026-06-21T07:19:09.5846133Z           "evidence": []
2026-06-21T07:19:09.5846224Z         },
2026-06-21T07:19:09.5846339Z         "unit": {
2026-06-21T07:19:09.5846458Z           "complete": true,
2026-06-21T07:19:09.5846567Z           "evidence": [
2026-06-21T07:19:09.5846677Z             {
2026-06-21T07:19:09.5846820Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.5846948Z               "line": 360
2026-06-21T07:19:09.5847050Z             }
2026-06-21T07:19:09.5847153Z           ]
2026-06-21T07:19:09.5847249Z         }
2026-06-21T07:19:09.5847351Z       }
2026-06-21T07:19:09.5847444Z     },
2026-06-21T07:19:09.5847548Z     {
2026-06-21T07:19:09.5847691Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T07:19:09.5849649Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T07:19:09.5849796Z       "requiredStages": [
2026-06-21T07:19:09.5849908Z         "impl",
2026-06-21T07:19:09.5849997Z         "unit"
2026-06-21T07:19:09.5850097Z       ],
2026-06-21T07:19:09.5850203Z       "stages": {
2026-06-21T07:19:09.5850303Z         "doc": {
2026-06-21T07:19:09.5850420Z           "complete": false,
2026-06-21T07:19:09.5850530Z           "evidence": []
2026-06-21T07:19:09.5850624Z         },
2026-06-21T07:19:09.5850727Z         "impl": {
2026-06-21T07:19:09.5850828Z           "complete": true,
2026-06-21T07:19:09.5850938Z           "evidence": [
2026-06-21T07:19:09.5851052Z             {
2026-06-21T07:19:09.5851201Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.5851301Z               "line": 1018
2026-06-21T07:19:09.5851399Z             },
2026-06-21T07:19:09.5851501Z             {
2026-06-21T07:19:09.5851653Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5851763Z               "line": 283
2026-06-21T07:19:09.5851968Z             },
2026-06-21T07:19:09.5852077Z             {
2026-06-21T07:19:09.5852226Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5852330Z               "line": 316
2026-06-21T07:19:09.5852426Z             },
2026-06-21T07:19:09.5852522Z             {
2026-06-21T07:19:09.5852775Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T07:19:09.5852883Z               "line": 26
2026-06-21T07:19:09.5852977Z             }
2026-06-21T07:19:09.5853078Z           ]
2026-06-21T07:19:09.5853187Z         },
2026-06-21T07:19:09.5853280Z         "int": {
2026-06-21T07:19:09.5853395Z           "complete": false,
2026-06-21T07:19:09.5853505Z           "evidence": []
2026-06-21T07:19:09.5853599Z         },
2026-06-21T07:19:09.5853709Z         "unit": {
2026-06-21T07:19:09.5853815Z           "complete": true,
2026-06-21T07:19:09.5853928Z           "evidence": [
2026-06-21T07:19:09.5854034Z             {
2026-06-21T07:19:09.5854172Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T07:19:09.5854291Z               "line": 271
2026-06-21T07:19:09.5854392Z             },
2026-06-21T07:19:09.5854501Z             {
2026-06-21T07:19:09.5854634Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T07:19:09.5854750Z               "line": 348
2026-06-21T07:19:09.5854845Z             }
2026-06-21T07:19:09.5854949Z           ]
2026-06-21T07:19:09.5855060Z         }
2026-06-21T07:19:09.5855158Z       }
2026-06-21T07:19:09.5855254Z     },
2026-06-21T07:19:09.5855361Z     {
2026-06-21T07:19:09.5855487Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T07:19:09.5855694Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T07:19:09.5855811Z       "requiredStages": [
2026-06-21T07:19:09.5855925Z         "impl",
2026-06-21T07:19:09.5856026Z         "unit"
2026-06-21T07:19:09.5856126Z       ],
2026-06-21T07:19:09.5856225Z       "stages": {
2026-06-21T07:19:09.5856336Z         "doc": {
2026-06-21T07:19:09.5856459Z           "complete": false,
2026-06-21T07:19:09.5856579Z           "evidence": []
2026-06-21T07:19:09.5856670Z         },
2026-06-21T07:19:09.5856770Z         "impl": {
2026-06-21T07:19:09.5856894Z           "complete": true,
2026-06-21T07:19:09.5856999Z           "evidence": [
2026-06-21T07:19:09.5857103Z             {
2026-06-21T07:19:09.5857237Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5857347Z               "line": 40
2026-06-21T07:19:09.5857432Z             },
2026-06-21T07:19:09.5857538Z             {
2026-06-21T07:19:09.5857680Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5857780Z               "line": 103
2026-06-21T07:19:09.5857886Z             },
2026-06-21T07:19:09.5857981Z             {
2026-06-21T07:19:09.5858113Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5858223Z               "line": 218
2026-06-21T07:19:09.5858322Z             },
2026-06-21T07:19:09.5858425Z             {
2026-06-21T07:19:09.5858555Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5858665Z               "line": 323
2026-06-21T07:19:09.5858764Z             }
2026-06-21T07:19:09.5858869Z           ]
2026-06-21T07:19:09.5859045Z         },
2026-06-21T07:19:09.5859136Z         "int": {
2026-06-21T07:19:09.5859265Z           "complete": false,
2026-06-21T07:19:09.5859369Z           "evidence": []
2026-06-21T07:19:09.5859480Z         },
2026-06-21T07:19:09.5859589Z         "unit": {
2026-06-21T07:19:09.5859694Z           "complete": true,
2026-06-21T07:19:09.5859804Z           "evidence": [
2026-06-21T07:19:09.5859904Z             {
2026-06-21T07:19:09.5860047Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5860148Z               "line": 361
2026-06-21T07:19:09.5860261Z             },
2026-06-21T07:19:09.5860361Z             {
2026-06-21T07:19:09.5860500Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5860614Z               "line": 433
2026-06-21T07:19:09.5860830Z             },
2026-06-21T07:19:09.5860943Z             {
2026-06-21T07:19:09.5861071Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5861170Z               "line": 496
2026-06-21T07:19:09.5861264Z             },
2026-06-21T07:19:09.5861364Z             {
2026-06-21T07:19:09.5861640Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5861746Z               "line": 517
2026-06-21T07:19:09.5861856Z             }
2026-06-21T07:19:09.5861964Z           ]
2026-06-21T07:19:09.5862071Z         }
2026-06-21T07:19:09.5862170Z       }
2026-06-21T07:19:09.5862270Z     },
2026-06-21T07:19:09.5862366Z     {
2026-06-21T07:19:09.5862518Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T07:19:09.5864919Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T07:19:09.5865061Z       "requiredStages": [
2026-06-21T07:19:09.5865170Z         "impl",
2026-06-21T07:19:09.5865272Z         "unit"
2026-06-21T07:19:09.5865357Z       ],
2026-06-21T07:19:09.5865471Z       "stages": {
2026-06-21T07:19:09.5865582Z         "doc": {
2026-06-21T07:19:09.5865690Z           "complete": false,
2026-06-21T07:19:09.5865795Z           "evidence": []
2026-06-21T07:19:09.5865896Z         },
2026-06-21T07:19:09.5866010Z         "impl": {
2026-06-21T07:19:09.5866129Z           "complete": true,
2026-06-21T07:19:09.5866245Z           "evidence": [
2026-06-21T07:19:09.5866353Z             {
2026-06-21T07:19:09.5866567Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.5866724Z               "line": 402
2026-06-21T07:19:09.5866829Z             },
2026-06-21T07:19:09.5866934Z             {
2026-06-21T07:19:09.5867086Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.5867202Z               "line": 446
2026-06-21T07:19:09.5867302Z             }
2026-06-21T07:19:09.5867401Z           ]
2026-06-21T07:19:09.5867512Z         },
2026-06-21T07:19:09.5867616Z         "int": {
2026-06-21T07:19:09.5867740Z           "complete": false,
2026-06-21T07:19:09.5867851Z           "evidence": []
2026-06-21T07:19:09.5867945Z         },
2026-06-21T07:19:09.5868050Z         "unit": {
2026-06-21T07:19:09.5868165Z           "complete": true,
2026-06-21T07:19:09.5868283Z           "evidence": [
2026-06-21T07:19:09.5868398Z             {
2026-06-21T07:19:09.5868555Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.5868655Z               "line": 910
2026-06-21T07:19:09.5868764Z             }
2026-06-21T07:19:09.5868872Z           ]
2026-06-21T07:19:09.5869052Z         }
2026-06-21T07:19:09.5869158Z       }
2026-06-21T07:19:09.5869253Z     },
2026-06-21T07:19:09.5869352Z     {
2026-06-21T07:19:09.5869501Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T07:19:09.5869657Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T07:19:09.5869773Z       "requiredStages": [
2026-06-21T07:19:09.5869868Z         "impl",
2026-06-21T07:19:09.5869977Z         "unit"
2026-06-21T07:19:09.5870079Z       ],
2026-06-21T07:19:09.5870192Z       "stages": {
2026-06-21T07:19:09.5870292Z         "doc": {
2026-06-21T07:19:09.5870412Z           "complete": false,
2026-06-21T07:19:09.5870521Z           "evidence": []
2026-06-21T07:19:09.5870621Z         },
2026-06-21T07:19:09.5870850Z         "impl": {
2026-06-21T07:19:09.5870965Z           "complete": true,
2026-06-21T07:19:09.5871080Z           "evidence": [
2026-06-21T07:19:09.5871179Z             {
2026-06-21T07:19:09.5871328Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5871432Z               "line": 116
2026-06-21T07:19:09.5871640Z             },
2026-06-21T07:19:09.5871749Z             {
2026-06-21T07:19:09.5871881Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5871992Z               "line": 211
2026-06-21T07:19:09.5872092Z             }
2026-06-21T07:19:09.5872200Z           ]
2026-06-21T07:19:09.5872302Z         },
2026-06-21T07:19:09.5872392Z         "int": {
2026-06-21T07:19:09.5872515Z           "complete": false,
2026-06-21T07:19:09.5872626Z           "evidence": []
2026-06-21T07:19:09.5872735Z         },
2026-06-21T07:19:09.5872830Z         "unit": {
2026-06-21T07:19:09.5872936Z           "complete": true,
2026-06-21T07:19:09.5873045Z           "evidence": [
2026-06-21T07:19:09.5873150Z             {
2026-06-21T07:19:09.5873294Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5873402Z               "line": 388
2026-06-21T07:19:09.5873507Z             },
2026-06-21T07:19:09.5873599Z             {
2026-06-21T07:19:09.5873736Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.5873861Z               "line": 469
2026-06-21T07:19:09.5873966Z             }
2026-06-21T07:19:09.5874069Z           ]
2026-06-21T07:19:09.5874169Z         }
2026-06-21T07:19:09.5874269Z       }
2026-06-21T07:19:09.5874363Z     },
2026-06-21T07:19:09.5874462Z     {
2026-06-21T07:19:09.5874602Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T07:19:09.5875778Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T07:19:09.5875908Z       "requiredStages": [
2026-06-21T07:19:09.5876003Z         "impl",
2026-06-21T07:19:09.5876108Z         "unit"
2026-06-21T07:19:09.5876218Z       ],
2026-06-21T07:19:09.5876323Z       "stages": {
2026-06-21T07:19:09.5876443Z         "doc": {
2026-06-21T07:19:09.5876547Z           "complete": true,
2026-06-21T07:19:09.5876647Z           "evidence": [
2026-06-21T07:19:09.5876743Z             {
2026-06-21T07:19:09.5876885Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5877003Z               "line": 206
2026-06-21T07:19:09.5877103Z             }
2026-06-21T07:19:09.5877200Z           ]
2026-06-21T07:19:09.5877293Z         },
2026-06-21T07:19:09.5877404Z         "impl": {
2026-06-21T07:19:09.5877508Z           "complete": true,
2026-06-21T07:19:09.5877617Z           "evidence": [
2026-06-21T07:19:09.5877719Z             {
2026-06-21T07:19:09.5877862Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5877975Z               "line": 691
2026-06-21T07:19:09.5878077Z             },
2026-06-21T07:19:09.5878180Z             {
2026-06-21T07:19:09.5878324Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5878439Z               "line": 791
2026-06-21T07:19:09.5878548Z             },
2026-06-21T07:19:09.5878648Z             {
2026-06-21T07:19:09.5878791Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5878905Z               "line": 1120
2026-06-21T07:19:09.5879097Z             },
2026-06-21T07:19:09.5879186Z             {
2026-06-21T07:19:09.5879343Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.5879451Z               "line": 184
2026-06-21T07:19:09.5879556Z             }
2026-06-21T07:19:09.5879670Z           ]
2026-06-21T07:19:09.5879757Z         },
2026-06-21T07:19:09.5879851Z         "int": {
2026-06-21T07:19:09.5879965Z           "complete": false,
2026-06-21T07:19:09.5880232Z           "evidence": []
2026-06-21T07:19:09.5880334Z         },
2026-06-21T07:19:09.5880429Z         "unit": {
2026-06-21T07:19:09.5880542Z           "complete": true,
2026-06-21T07:19:09.5880648Z           "evidence": [
2026-06-21T07:19:09.5880753Z             {
2026-06-21T07:19:09.5880885Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5881096Z               "line": 1169
2026-06-21T07:19:09.5881205Z             },
2026-06-21T07:19:09.5881311Z             {
2026-06-21T07:19:09.5881472Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T07:19:09.5881573Z               "line": 44
2026-06-21T07:19:09.5881672Z             },
2026-06-21T07:19:09.5881773Z             {
2026-06-21T07:19:09.5881932Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T07:19:09.5882039Z               "line": 52
2026-06-21T07:19:09.5882129Z             },
2026-06-21T07:19:09.5882225Z             {
2026-06-21T07:19:09.5882360Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T07:19:09.5882484Z               "line": 57
2026-06-21T07:19:09.5882590Z             },
2026-06-21T07:19:09.5882699Z             {
2026-06-21T07:19:09.5882862Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T07:19:09.5882962Z               "line": 54
2026-06-21T07:19:09.5883080Z             }
2026-06-21T07:19:09.5883177Z           ]
2026-06-21T07:19:09.5883281Z         }
2026-06-21T07:19:09.5883376Z       }
2026-06-21T07:19:09.5883472Z     },
2026-06-21T07:19:09.5883577Z     {
2026-06-21T07:19:09.5883724Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T07:19:09.5883972Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T07:19:09.5884082Z       "requiredStages": [
2026-06-21T07:19:09.5884187Z         "impl",
2026-06-21T07:19:09.5884291Z         "unit"
2026-06-21T07:19:09.5884397Z       ],
2026-06-21T07:19:09.5884507Z       "stages": {
2026-06-21T07:19:09.5884606Z         "doc": {
2026-06-21T07:19:09.5884734Z           "complete": false,
2026-06-21T07:19:09.5884843Z           "evidence": []
2026-06-21T07:19:09.5884956Z         },
2026-06-21T07:19:09.5885065Z         "impl": {
2026-06-21T07:19:09.5885181Z           "complete": true,
2026-06-21T07:19:09.5885294Z           "evidence": [
2026-06-21T07:19:09.5885399Z             {
2026-06-21T07:19:09.5885553Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5885656Z               "line": 26
2026-06-21T07:19:09.5885767Z             },
2026-06-21T07:19:09.5885867Z             {
2026-06-21T07:19:09.5886005Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5886124Z               "line": 135
2026-06-21T07:19:09.5886229Z             },
2026-06-21T07:19:09.5886339Z             {
2026-06-21T07:19:09.5886487Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5886587Z               "line": 26
2026-06-21T07:19:09.5886688Z             },
2026-06-21T07:19:09.5886801Z             {
2026-06-21T07:19:09.5886959Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5887069Z               "line": 237
2026-06-21T07:19:09.5887168Z             }
2026-06-21T07:19:09.5887254Z           ]
2026-06-21T07:19:09.5887355Z         },
2026-06-21T07:19:09.5887459Z         "int": {
2026-06-21T07:19:09.5887582Z           "complete": false,
2026-06-21T07:19:09.5887697Z           "evidence": []
2026-06-21T07:19:09.5887793Z         },
2026-06-21T07:19:09.5887896Z         "unit": {
2026-06-21T07:19:09.5888012Z           "complete": true,
2026-06-21T07:19:09.5888117Z           "evidence": [
2026-06-21T07:19:09.5888225Z             {
2026-06-21T07:19:09.5888365Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5888469Z               "line": 161
2026-06-21T07:19:09.5888564Z             },
2026-06-21T07:19:09.5888665Z             {
2026-06-21T07:19:09.5888808Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5889074Z               "line": 170
2026-06-21T07:19:09.5889174Z             },
2026-06-21T07:19:09.5889271Z             {
2026-06-21T07:19:09.5889417Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5889532Z               "line": 179
2026-06-21T07:19:09.5889643Z             },
2026-06-21T07:19:09.5889840Z             {
2026-06-21T07:19:09.5889989Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5890106Z               "line": 190
2026-06-21T07:19:09.5890211Z             },
2026-06-21T07:19:09.5890312Z             {
2026-06-21T07:19:09.5890444Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5890554Z               "line": 199
2026-06-21T07:19:09.5890660Z             },
2026-06-21T07:19:09.5890764Z             {
2026-06-21T07:19:09.5890903Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5891003Z               "line": 216
2026-06-21T07:19:09.5891102Z             },
2026-06-21T07:19:09.5891208Z             {
2026-06-21T07:19:09.5891350Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T07:19:09.5891470Z               "line": 242
2026-06-21T07:19:09.5891575Z             },
2026-06-21T07:19:09.5891670Z             {
2026-06-21T07:19:09.5891809Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.5891932Z               "line": 295
2026-06-21T07:19:09.5892032Z             },
2026-06-21T07:19:09.5892133Z             {
2026-06-21T07:19:09.5892261Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.5892371Z               "line": 244
2026-06-21T07:19:09.5892482Z             },
2026-06-21T07:19:09.5892580Z             {
2026-06-21T07:19:09.5892742Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5892837Z               "line": 265
2026-06-21T07:19:09.5892944Z             },
2026-06-21T07:19:09.5893044Z             {
2026-06-21T07:19:09.5893203Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5893330Z               "line": 293
2026-06-21T07:19:09.5893417Z             },
2026-06-21T07:19:09.5893517Z             {
2026-06-21T07:19:09.5893669Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5893780Z               "line": 317
2026-06-21T07:19:09.5893884Z             },
2026-06-21T07:19:09.5893998Z             {
2026-06-21T07:19:09.5894151Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T07:19:09.5894256Z               "line": 327
2026-06-21T07:19:09.5894361Z             },
2026-06-21T07:19:09.5894466Z             {
2026-06-21T07:19:09.5894618Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.5894710Z               "line": 540
2026-06-21T07:19:09.5894823Z             }
2026-06-21T07:19:09.5894928Z           ]
2026-06-21T07:19:09.5895035Z         }
2026-06-21T07:19:09.5895142Z       }
2026-06-21T07:19:09.5895232Z     },
2026-06-21T07:19:09.5895327Z     {
2026-06-21T07:19:09.5895473Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T07:19:09.5900497Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T07:19:09.5900867Z       "requiredStages": [],
2026-06-21T07:19:09.5900975Z       "stages": {
2026-06-21T07:19:09.5901086Z         "doc": {
2026-06-21T07:19:09.5901195Z           "complete": false,
2026-06-21T07:19:09.5901314Z           "evidence": []
2026-06-21T07:19:09.5901411Z         },
2026-06-21T07:19:09.5901506Z         "impl": {
2026-06-21T07:19:09.5901619Z           "complete": false,
2026-06-21T07:19:09.5901735Z           "evidence": []
2026-06-21T07:19:09.5901834Z         },
2026-06-21T07:19:09.5901939Z         "int": {
2026-06-21T07:19:09.5902045Z           "complete": false,
2026-06-21T07:19:09.5902154Z           "evidence": []
2026-06-21T07:19:09.5902263Z         },
2026-06-21T07:19:09.5902355Z         "unit": {
2026-06-21T07:19:09.5902464Z           "complete": false,
2026-06-21T07:19:09.5902573Z           "evidence": []
2026-06-21T07:19:09.5902675Z         }
2026-06-21T07:19:09.5902775Z       }
2026-06-21T07:19:09.5902874Z     },
2026-06-21T07:19:09.5902980Z     {
2026-06-21T07:19:09.5903113Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T07:19:09.5904720Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T07:19:09.5904849Z       "requiredStages": [
2026-06-21T07:19:09.5904960Z         "impl",
2026-06-21T07:19:09.5905064Z         "unit",
2026-06-21T07:19:09.5905159Z         "int"
2026-06-21T07:19:09.5905246Z       ],
2026-06-21T07:19:09.5905355Z       "stages": {
2026-06-21T07:19:09.5905455Z         "doc": {
2026-06-21T07:19:09.5905575Z           "complete": false,
2026-06-21T07:19:09.5905679Z           "evidence": []
2026-06-21T07:19:09.5905774Z         },
2026-06-21T07:19:09.5905878Z         "impl": {
2026-06-21T07:19:09.5906001Z           "complete": true,
2026-06-21T07:19:09.5906109Z           "evidence": [
2026-06-21T07:19:09.5906214Z             {
2026-06-21T07:19:09.5906367Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5906471Z               "line": 538
2026-06-21T07:19:09.5906582Z             },
2026-06-21T07:19:09.5906687Z             {
2026-06-21T07:19:09.5906834Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.5906939Z               "line": 625
2026-06-21T07:19:09.5907034Z             },
2026-06-21T07:19:09.5907140Z             {
2026-06-21T07:19:09.5907316Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T07:19:09.5907425Z               "line": 21
2026-06-21T07:19:09.5907532Z             }
2026-06-21T07:19:09.5907631Z           ]
2026-06-21T07:19:09.5907731Z         },
2026-06-21T07:19:09.5907837Z         "int": {
2026-06-21T07:19:09.5907959Z           "complete": true,
2026-06-21T07:19:09.5908069Z           "evidence": [
2026-06-21T07:19:09.5908171Z             {
2026-06-21T07:19:09.5908341Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T07:19:09.5908452Z               "line": 236
2026-06-21T07:19:09.5908636Z             },
2026-06-21T07:19:09.5908740Z             {
2026-06-21T07:19:09.5908903Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T07:19:09.5909079Z               "line": 396
2026-06-21T07:19:09.5909194Z             },
2026-06-21T07:19:09.5909294Z             {
2026-06-21T07:19:09.5909975Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.5910100Z               "line": 1496
2026-06-21T07:19:09.5910204Z             },
2026-06-21T07:19:09.5910314Z             {
2026-06-21T07:19:09.5910486Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.5910600Z               "line": 1648
2026-06-21T07:19:09.5914455Z             }
2026-06-21T07:19:09.5914604Z           ]
2026-06-21T07:19:09.5914718Z         },
2026-06-21T07:19:09.5914828Z         "unit": {
2026-06-21T07:19:09.5914947Z           "complete": true,
2026-06-21T07:19:09.5915056Z           "evidence": [
2026-06-21T07:19:09.5915162Z             {
2026-06-21T07:19:09.5915338Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.5915447Z               "line": 887
2026-06-21T07:19:09.5915558Z             }
2026-06-21T07:19:09.5915657Z           ]
2026-06-21T07:19:09.5915758Z         }
2026-06-21T07:19:09.5915864Z       }
2026-06-21T07:19:09.5915986Z     },
2026-06-21T07:19:09.5916097Z     {
2026-06-21T07:19:09.5916244Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T07:19:09.5916429Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T07:19:09.5916547Z       "requiredStages": [
2026-06-21T07:19:09.5916660Z         "impl",
2026-06-21T07:19:09.5916765Z         "unit"
2026-06-21T07:19:09.5916866Z       ],
2026-06-21T07:19:09.5916979Z       "stages": {
2026-06-21T07:19:09.5917075Z         "doc": {
2026-06-21T07:19:09.5917190Z           "complete": false,
2026-06-21T07:19:09.5917294Z           "evidence": []
2026-06-21T07:19:09.5917404Z         },
2026-06-21T07:19:09.5917509Z         "impl": {
2026-06-21T07:19:09.5917632Z           "complete": true,
2026-06-21T07:19:09.5917734Z           "evidence": [
2026-06-21T07:19:09.5917824Z             {
2026-06-21T07:19:09.5917971Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.5918078Z               "line": 25
2026-06-21T07:19:09.5918196Z             },
2026-06-21T07:19:09.5918291Z             {
2026-06-21T07:19:09.5918439Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.5918548Z               "line": 26
2026-06-21T07:19:09.5918649Z             },
2026-06-21T07:19:09.5918754Z             {
2026-06-21T07:19:09.5918896Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.5919097Z               "line": 159
2026-06-21T07:19:09.5919201Z             }
2026-06-21T07:19:09.5919319Z           ]
2026-06-21T07:19:09.5919416Z         },
2026-06-21T07:19:09.5919525Z         "int": {
2026-06-21T07:19:09.5919649Z           "complete": false,
2026-06-21T07:19:09.5919759Z           "evidence": []
2026-06-21T07:19:09.5919863Z         },
2026-06-21T07:19:09.5919969Z         "unit": {
2026-06-21T07:19:09.5920083Z           "complete": true,
2026-06-21T07:19:09.5920192Z           "evidence": [
2026-06-21T07:19:09.5920288Z             {
2026-06-21T07:19:09.5920436Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.5920540Z               "line": 188
2026-06-21T07:19:09.5920651Z             },
2026-06-21T07:19:09.5920750Z             {
2026-06-21T07:19:09.5920879Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.5920980Z               "line": 240
2026-06-21T07:19:09.5921084Z             },
2026-06-21T07:19:09.5921189Z             {
2026-06-21T07:19:09.5921328Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.5921441Z               "line": 186
2026-06-21T07:19:09.5921536Z             }
2026-06-21T07:19:09.5921645Z           ]
2026-06-21T07:19:09.5921744Z         }
2026-06-21T07:19:09.5921848Z       }
2026-06-21T07:19:09.5921954Z     },
2026-06-21T07:19:09.5922201Z     {
2026-06-21T07:19:09.5922335Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T07:19:09.5922531Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T07:19:09.5922654Z       "requiredStages": [
2026-06-21T07:19:09.5922749Z         "impl",
2026-06-21T07:19:09.5922941Z         "unit"
2026-06-21T07:19:09.5923050Z       ],
2026-06-21T07:19:09.5923155Z       "stages": {
2026-06-21T07:19:09.5923269Z         "doc": {
2026-06-21T07:19:09.5923374Z           "complete": false,
2026-06-21T07:19:09.5923495Z           "evidence": []
2026-06-21T07:19:09.5923603Z         },
2026-06-21T07:19:09.5923699Z         "impl": {
2026-06-21T07:19:09.5923810Z           "complete": true,
2026-06-21T07:19:09.5923909Z           "evidence": [
2026-06-21T07:19:09.5924018Z             {
2026-06-21T07:19:09.5924157Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5924275Z               "line": 48
2026-06-21T07:19:09.5924384Z             },
2026-06-21T07:19:09.5924493Z             {
2026-06-21T07:19:09.5924639Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5924734Z               "line": 55
2026-06-21T07:19:09.5924845Z             },
2026-06-21T07:19:09.5924949Z             {
2026-06-21T07:19:09.5925098Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5925207Z               "line": 74
2026-06-21T07:19:09.5925306Z             },
2026-06-21T07:19:09.5925412Z             {
2026-06-21T07:19:09.5925556Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5925669Z               "line": 91
2026-06-21T07:19:09.5925765Z             }
2026-06-21T07:19:09.5925864Z           ]
2026-06-21T07:19:09.5925964Z         },
2026-06-21T07:19:09.5926066Z         "int": {
2026-06-21T07:19:09.5926188Z           "complete": false,
2026-06-21T07:19:09.5926303Z           "evidence": []
2026-06-21T07:19:09.5926400Z         },
2026-06-21T07:19:09.5926494Z         "unit": {
2026-06-21T07:19:09.5926618Z           "complete": true,
2026-06-21T07:19:09.5926729Z           "evidence": [
2026-06-21T07:19:09.5926832Z             {
2026-06-21T07:19:09.5926979Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5927075Z               "line": 149
2026-06-21T07:19:09.5927173Z             },
2026-06-21T07:19:09.5927281Z             {
2026-06-21T07:19:09.5927421Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5927534Z               "line": 166
2026-06-21T07:19:09.5927635Z             },
2026-06-21T07:19:09.5927740Z             {
2026-06-21T07:19:09.5927863Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5927974Z               "line": 176
2026-06-21T07:19:09.5928074Z             },
2026-06-21T07:19:09.5928183Z             {
2026-06-21T07:19:09.5928318Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5928417Z               "line": 194
2026-06-21T07:19:09.5928517Z             },
2026-06-21T07:19:09.5928628Z             {
2026-06-21T07:19:09.5928775Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.5928875Z               "line": 207
2026-06-21T07:19:09.5929046Z             }
2026-06-21T07:19:09.5929141Z           ]
2026-06-21T07:19:09.5929238Z         }
2026-06-21T07:19:09.5929352Z       }
2026-06-21T07:19:09.5929456Z     },
2026-06-21T07:19:09.5929563Z     {
2026-06-21T07:19:09.5929699Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T07:19:09.5929918Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T07:19:09.5930037Z       "requiredStages": [
2026-06-21T07:19:09.5930128Z         "impl",
2026-06-21T07:19:09.5930238Z         "unit"
2026-06-21T07:19:09.5930329Z       ],
2026-06-21T07:19:09.5930438Z       "stages": {
2026-06-21T07:19:09.5930544Z         "doc": {
2026-06-21T07:19:09.5930658Z           "complete": false,
2026-06-21T07:19:09.5930762Z           "evidence": []
2026-06-21T07:19:09.5930858Z         },
2026-06-21T07:19:09.5931086Z         "impl": {
2026-06-21T07:19:09.5931192Z           "complete": true,
2026-06-21T07:19:09.5931306Z           "evidence": [
2026-06-21T07:19:09.5931406Z             {
2026-06-21T07:19:09.5931559Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.5931668Z               "line": 466
2026-06-21T07:19:09.5931865Z             },
2026-06-21T07:19:09.5931978Z             {
2026-06-21T07:19:09.5932110Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.5932219Z               "line": 26
2026-06-21T07:19:09.5932313Z             }
2026-06-21T07:19:09.5932418Z           ]
2026-06-21T07:19:09.5932524Z         },
2026-06-21T07:19:09.5932633Z         "int": {
2026-06-21T07:19:09.5932752Z           "complete": false,
2026-06-21T07:19:09.5932858Z           "evidence": []
2026-06-21T07:19:09.5932961Z         },
2026-06-21T07:19:09.5933062Z         "unit": {
2026-06-21T07:19:09.5933186Z           "complete": true,
2026-06-21T07:19:09.5933295Z           "evidence": [
2026-06-21T07:19:09.5933401Z             {
2026-06-21T07:19:09.5933548Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.5933657Z               "line": 150
2026-06-21T07:19:09.5933764Z             },
2026-06-21T07:19:09.5933868Z             {
2026-06-21T07:19:09.5933996Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.5934102Z               "line": 208
2026-06-21T07:19:09.5934211Z             }
2026-06-21T07:19:09.5934316Z           ]
2026-06-21T07:19:09.5934412Z         }
2026-06-21T07:19:09.5934521Z       }
2026-06-21T07:19:09.5934616Z     },
2026-06-21T07:19:09.5934704Z     {
2026-06-21T07:19:09.5934854Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T07:19:09.5944452Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T07:19:09.5944852Z       "requiredStages": [
2026-06-21T07:19:09.5944959Z         "impl",
2026-06-21T07:19:09.5945066Z         "unit",
2026-06-21T07:19:09.5945167Z         "int"
2026-06-21T07:19:09.5945273Z       ],
2026-06-21T07:19:09.5945381Z       "stages": {
2026-06-21T07:19:09.5945480Z         "doc": {
2026-06-21T07:19:09.5945605Z           "complete": false,
2026-06-21T07:19:09.5945717Z           "evidence": []
2026-06-21T07:19:09.5945806Z         },
2026-06-21T07:19:09.5945903Z         "impl": {
2026-06-21T07:19:09.5946022Z           "complete": true,
2026-06-21T07:19:09.5946140Z           "evidence": [
2026-06-21T07:19:09.5946246Z             {
2026-06-21T07:19:09.5946408Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.5946566Z               "line": 99
2026-06-21T07:19:09.5946722Z             },
2026-06-21T07:19:09.5946890Z             {
2026-06-21T07:19:09.5947033Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.5947142Z               "line": 201
2026-06-21T07:19:09.5947243Z             }
2026-06-21T07:19:09.5947347Z           ]
2026-06-21T07:19:09.5947457Z         },
2026-06-21T07:19:09.5947558Z         "int": {
2026-06-21T07:19:09.5947676Z           "complete": true,
2026-06-21T07:19:09.5947777Z           "evidence": [
2026-06-21T07:19:09.5947882Z             {
2026-06-21T07:19:09.5948061Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.5948176Z               "line": 737
2026-06-21T07:19:09.5948284Z             }
2026-06-21T07:19:09.5948378Z           ]
2026-06-21T07:19:09.5948479Z         },
2026-06-21T07:19:09.5948580Z         "unit": {
2026-06-21T07:19:09.5948707Z           "complete": true,
2026-06-21T07:19:09.5948818Z           "evidence": [
2026-06-21T07:19:09.5948923Z             {
2026-06-21T07:19:09.5949161Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.5949285Z               "line": 517
2026-06-21T07:19:09.5949405Z             },
2026-06-21T07:19:09.5949505Z             {
2026-06-21T07:19:09.5949656Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.5949772Z               "line": 576
2026-06-21T07:19:09.5949876Z             }
2026-06-21T07:19:09.5949990Z           ]
2026-06-21T07:19:09.5950091Z         }
2026-06-21T07:19:09.5950199Z       }
2026-06-21T07:19:09.5950300Z     },
2026-06-21T07:19:09.5950402Z     {
2026-06-21T07:19:09.5950543Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T07:19:09.5951930Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T07:19:09.5952059Z       "requiredStages": [
2026-06-21T07:19:09.5952159Z         "doc",
2026-06-21T07:19:09.5952269Z         "impl",
2026-06-21T07:19:09.5952365Z         "unit"
2026-06-21T07:19:09.5952464Z       ],
2026-06-21T07:19:09.5952574Z       "stages": {
2026-06-21T07:19:09.5952807Z         "doc": {
2026-06-21T07:19:09.5952918Z           "complete": true,
2026-06-21T07:19:09.5953023Z           "evidence": [
2026-06-21T07:19:09.5953131Z             {
2026-06-21T07:19:09.5953274Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.5953372Z               "line": 214
2026-06-21T07:19:09.5953601Z             }
2026-06-21T07:19:09.5953696Z           ]
2026-06-21T07:19:09.5953800Z         },
2026-06-21T07:19:09.5953901Z         "impl": {
2026-06-21T07:19:09.5954021Z           "complete": true,
2026-06-21T07:19:09.5954129Z           "evidence": [
2026-06-21T07:19:09.5954221Z             {
2026-06-21T07:19:09.5954377Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5954482Z               "line": 56
2026-06-21T07:19:09.5954597Z             },
2026-06-21T07:19:09.5954702Z             {
2026-06-21T07:19:09.5954840Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.5954954Z               "line": 580
2026-06-21T07:19:09.5955074Z             },
2026-06-21T07:19:09.5955175Z             {
2026-06-21T07:19:09.5955316Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5955422Z               "line": 36
2026-06-21T07:19:09.5955524Z             },
2026-06-21T07:19:09.5955631Z             {
2026-06-21T07:19:09.5955790Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5955890Z               "line": 59
2026-06-21T07:19:09.5955993Z             },
2026-06-21T07:19:09.5956093Z             {
2026-06-21T07:19:09.5956244Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5956353Z               "line": 83
2026-06-21T07:19:09.5956463Z             },
2026-06-21T07:19:09.5956554Z             {
2026-06-21T07:19:09.5956696Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5956816Z               "line": 140
2026-06-21T07:19:09.5956911Z             },
2026-06-21T07:19:09.5957020Z             {
2026-06-21T07:19:09.5957159Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5957268Z               "line": 159
2026-06-21T07:19:09.5957374Z             },
2026-06-21T07:19:09.5957479Z             {
2026-06-21T07:19:09.5957636Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5957737Z               "line": 384
2026-06-21T07:19:09.5957845Z             },
2026-06-21T07:19:09.5957946Z             {
2026-06-21T07:19:09.5958090Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5958208Z               "line": 535
2026-06-21T07:19:09.5958308Z             },
2026-06-21T07:19:09.5958419Z             {
2026-06-21T07:19:09.5958555Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5958659Z               "line": 581
2026-06-21T07:19:09.5958750Z             },
2026-06-21T07:19:09.5958848Z             {
2026-06-21T07:19:09.5959068Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.5959173Z               "line": 300
2026-06-21T07:19:09.5959315Z             },
2026-06-21T07:19:09.5959426Z             {
2026-06-21T07:19:09.5959558Z               "path": "crates/spt/src/main.rs",
2026-06-21T07:19:09.5959655Z               "line": 42
2026-06-21T07:19:09.5959759Z             }
2026-06-21T07:19:09.5959868Z           ]
2026-06-21T07:19:09.5959975Z         },
2026-06-21T07:19:09.5960083Z         "int": {
2026-06-21T07:19:09.5960202Z           "complete": false,
2026-06-21T07:19:09.5960308Z           "evidence": []
2026-06-21T07:19:09.5960398Z         },
2026-06-21T07:19:09.5960498Z         "unit": {
2026-06-21T07:19:09.5960623Z           "complete": true,
2026-06-21T07:19:09.5960727Z           "evidence": [
2026-06-21T07:19:09.5960841Z             {
2026-06-21T07:19:09.5960990Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5961098Z               "line": 813
2026-06-21T07:19:09.5961200Z             },
2026-06-21T07:19:09.5961305Z             {
2026-06-21T07:19:09.5961455Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5961666Z               "line": 854
2026-06-21T07:19:09.5961779Z             },
2026-06-21T07:19:09.5961875Z             {
2026-06-21T07:19:09.5962019Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.5962137Z               "line": 928
2026-06-21T07:19:09.5962343Z             }
2026-06-21T07:19:09.5962442Z           ]
2026-06-21T07:19:09.5962539Z         }
2026-06-21T07:19:09.5962643Z       }
2026-06-21T07:19:09.5962738Z     },
2026-06-21T07:19:09.5962849Z     {
2026-06-21T07:19:09.5963005Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T07:19:09.5968081Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T07:19:09.5968234Z       "requiredStages": [
2026-06-21T07:19:09.5968344Z         "impl",
2026-06-21T07:19:09.5968467Z         "unit",
2026-06-21T07:19:09.5968558Z         "int"
2026-06-21T07:19:09.5968659Z       ],
2026-06-21T07:19:09.5968768Z       "stages": {
2026-06-21T07:19:09.5968883Z         "doc": {
2026-06-21T07:19:09.5969054Z           "complete": false,
2026-06-21T07:19:09.5969172Z           "evidence": []
2026-06-21T07:19:09.5969277Z         },
2026-06-21T07:19:09.5969376Z         "impl": {
2026-06-21T07:19:09.5969489Z           "complete": true,
2026-06-21T07:19:09.5969595Z           "evidence": [
2026-06-21T07:19:09.5969700Z             {
2026-06-21T07:19:09.5969857Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.5969977Z               "line": 106
2026-06-21T07:19:09.5970071Z             }
2026-06-21T07:19:09.5970161Z           ]
2026-06-21T07:19:09.5970272Z         },
2026-06-21T07:19:09.5970377Z         "int": {
2026-06-21T07:19:09.5970496Z           "complete": true,
2026-06-21T07:19:09.5970596Z           "evidence": [
2026-06-21T07:19:09.5970696Z             {
2026-06-21T07:19:09.5970854Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T07:19:09.5970963Z               "line": 296
2026-06-21T07:19:09.5971068Z             }
2026-06-21T07:19:09.5971169Z           ]
2026-06-21T07:19:09.5971277Z         },
2026-06-21T07:19:09.5971373Z         "unit": {
2026-06-21T07:19:09.5971484Z           "complete": true,
2026-06-21T07:19:09.5971592Z           "evidence": [
2026-06-21T07:19:09.5971693Z             {
2026-06-21T07:19:09.5971851Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.5972068Z               "line": 464
2026-06-21T07:19:09.5972183Z             }
2026-06-21T07:19:09.5972288Z           ]
2026-06-21T07:19:09.5972392Z         }
2026-06-21T07:19:09.5972498Z       }
2026-06-21T07:19:09.5972593Z     },
2026-06-21T07:19:09.5972692Z     {
2026-06-21T07:19:09.5972817Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T07:19:09.5976399Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T07:19:09.5976547Z       "requiredStages": [
2026-06-21T07:19:09.5976658Z         "impl",
2026-06-21T07:19:09.5976751Z         "unit",
2026-06-21T07:19:09.5976867Z         "int"
2026-06-21T07:19:09.5976963Z       ],
2026-06-21T07:19:09.5977071Z       "stages": {
2026-06-21T07:19:09.5977170Z         "doc": {
2026-06-21T07:19:09.5977294Z           "complete": false,
2026-06-21T07:19:09.5977411Z           "evidence": []
2026-06-21T07:19:09.5977515Z         },
2026-06-21T07:19:09.5977627Z         "impl": {
2026-06-21T07:19:09.5977735Z           "complete": true,
2026-06-21T07:19:09.5977845Z           "evidence": [
2026-06-21T07:19:09.5977941Z             {
2026-06-21T07:19:09.5978097Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.5978203Z               "line": 123
2026-06-21T07:19:09.5978317Z             },
2026-06-21T07:19:09.5978426Z             {
2026-06-21T07:19:09.5978557Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.5978670Z               "line": 134
2026-06-21T07:19:09.5978775Z             }
2026-06-21T07:19:09.5978872Z           ]
2026-06-21T07:19:09.5979046Z         },
2026-06-21T07:19:09.5979138Z         "int": {
2026-06-21T07:19:09.5979271Z           "complete": true,
2026-06-21T07:19:09.5979390Z           "evidence": [
2026-06-21T07:19:09.5979496Z             {
2026-06-21T07:19:09.5979633Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.5979756Z               "line": 312
2026-06-21T07:19:09.5979866Z             },
2026-06-21T07:19:09.5979968Z             {
2026-06-21T07:19:09.5980116Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.5980217Z               "line": 525
2026-06-21T07:19:09.5980317Z             }
2026-06-21T07:19:09.5980402Z           ]
2026-06-21T07:19:09.5980513Z         },
2026-06-21T07:19:09.5980617Z         "unit": {
2026-06-21T07:19:09.5980726Z           "complete": true,
2026-06-21T07:19:09.5980836Z           "evidence": [
2026-06-21T07:19:09.5980927Z             {
2026-06-21T07:19:09.5981090Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.5981199Z               "line": 250
2026-06-21T07:19:09.5981303Z             }
2026-06-21T07:19:09.5981409Z           ]
2026-06-21T07:19:09.5981514Z         }
2026-06-21T07:19:09.5981618Z       }
2026-06-21T07:19:09.5981719Z     },
2026-06-21T07:19:09.5981814Z     {
2026-06-21T07:19:09.5981952Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T07:19:09.5983759Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T07:19:09.5984083Z       "requiredStages": [
2026-06-21T07:19:09.5984187Z         "impl",
2026-06-21T07:19:09.5984294Z         "unit"
2026-06-21T07:19:09.5984388Z       ],
2026-06-21T07:19:09.5984493Z       "stages": {
2026-06-21T07:19:09.5984603Z         "doc": {
2026-06-21T07:19:09.5984708Z           "complete": false,
2026-06-21T07:19:09.5984830Z           "evidence": []
2026-06-21T07:19:09.5984935Z         },
2026-06-21T07:19:09.5985044Z         "impl": {
2026-06-21T07:19:09.5985152Z           "complete": true,
2026-06-21T07:19:09.5985252Z           "evidence": [
2026-06-21T07:19:09.5985363Z             {
2026-06-21T07:19:09.5985514Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5985630Z               "line": 31
2026-06-21T07:19:09.5985734Z             }
2026-06-21T07:19:09.5985833Z           ]
2026-06-21T07:19:09.5985935Z         },
2026-06-21T07:19:09.5986035Z         "int": {
2026-06-21T07:19:09.5986148Z           "complete": false,
2026-06-21T07:19:09.5986249Z           "evidence": []
2026-06-21T07:19:09.5986354Z         },
2026-06-21T07:19:09.5986448Z         "unit": {
2026-06-21T07:19:09.5986564Z           "complete": true,
2026-06-21T07:19:09.5986678Z           "evidence": [
2026-06-21T07:19:09.5986787Z             {
2026-06-21T07:19:09.5986931Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5987031Z               "line": 181
2026-06-21T07:19:09.5987136Z             }
2026-06-21T07:19:09.5987232Z           ]
2026-06-21T07:19:09.5987335Z         }
2026-06-21T07:19:09.5987446Z       }
2026-06-21T07:19:09.5987542Z     },
2026-06-21T07:19:09.5987636Z     {
2026-06-21T07:19:09.5987773Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T07:19:09.5987962Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T07:19:09.5988085Z       "requiredStages": [
2026-06-21T07:19:09.5988192Z         "impl",
2026-06-21T07:19:09.5988291Z         "unit"
2026-06-21T07:19:09.5988386Z       ],
2026-06-21T07:19:09.5988497Z       "stages": {
2026-06-21T07:19:09.5988606Z         "doc": {
2026-06-21T07:19:09.5988729Z           "complete": false,
2026-06-21T07:19:09.5988835Z           "evidence": []
2026-06-21T07:19:09.5988935Z         },
2026-06-21T07:19:09.5989092Z         "impl": {
2026-06-21T07:19:09.5989201Z           "complete": true,
2026-06-21T07:19:09.5989330Z           "evidence": [
2026-06-21T07:19:09.5989432Z             {
2026-06-21T07:19:09.5989583Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5989678Z               "line": 49
2026-06-21T07:19:09.5989780Z             },
2026-06-21T07:19:09.5989883Z             {
2026-06-21T07:19:09.5990028Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5990142Z               "line": 81
2026-06-21T07:19:09.5990240Z             }
2026-06-21T07:19:09.5990340Z           ]
2026-06-21T07:19:09.5990445Z         },
2026-06-21T07:19:09.5990548Z         "int": {
2026-06-21T07:19:09.5990657Z           "complete": false,
2026-06-21T07:19:09.5990763Z           "evidence": []
2026-06-21T07:19:09.5990862Z         },
2026-06-21T07:19:09.5990962Z         "unit": {
2026-06-21T07:19:09.5991068Z           "complete": true,
2026-06-21T07:19:09.5991177Z           "evidence": [
2026-06-21T07:19:09.5991296Z             {
2026-06-21T07:19:09.5991435Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5991544Z               "line": 156
2026-06-21T07:19:09.5991778Z             },
2026-06-21T07:19:09.5991878Z             {
2026-06-21T07:19:09.5992031Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5992140Z               "line": 173
2026-06-21T07:19:09.5992245Z             },
2026-06-21T07:19:09.5992342Z             {
2026-06-21T07:19:09.5992585Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5992694Z               "line": 196
2026-06-21T07:19:09.5992803Z             }
2026-06-21T07:19:09.5992904Z           ]
2026-06-21T07:19:09.5992999Z         }
2026-06-21T07:19:09.5993103Z       }
2026-06-21T07:19:09.5993207Z     },
2026-06-21T07:19:09.5993308Z     {
2026-06-21T07:19:09.5993465Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T07:19:09.5993666Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T07:19:09.5993784Z       "requiredStages": [
2026-06-21T07:19:09.5993880Z         "impl",
2026-06-21T07:19:09.5993990Z         "unit"
2026-06-21T07:19:09.5994099Z       ],
2026-06-21T07:19:09.5994204Z       "stages": {
2026-06-21T07:19:09.5994314Z         "doc": {
2026-06-21T07:19:09.5994428Z           "complete": false,
2026-06-21T07:19:09.5994544Z           "evidence": []
2026-06-21T07:19:09.5994643Z         },
2026-06-21T07:19:09.5994748Z         "impl": {
2026-06-21T07:19:09.5994878Z           "complete": true,
2026-06-21T07:19:09.5994986Z           "evidence": [
2026-06-21T07:19:09.5995081Z             {
2026-06-21T07:19:09.5995225Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5995334Z               "line": 120
2026-06-21T07:19:09.5995438Z             }
2026-06-21T07:19:09.5995547Z           ]
2026-06-21T07:19:09.5995655Z         },
2026-06-21T07:19:09.5995764Z         "int": {
2026-06-21T07:19:09.5995880Z           "complete": false,
2026-06-21T07:19:09.5995989Z           "evidence": []
2026-06-21T07:19:09.5996089Z         },
2026-06-21T07:19:09.5996199Z         "unit": {
2026-06-21T07:19:09.5996318Z           "complete": true,
2026-06-21T07:19:09.5996437Z           "evidence": [
2026-06-21T07:19:09.5996538Z             {
2026-06-21T07:19:09.5996675Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5996786Z               "line": 212
2026-06-21T07:19:09.5996890Z             },
2026-06-21T07:19:09.5996990Z             {
2026-06-21T07:19:09.5997143Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5997248Z               "line": 221
2026-06-21T07:19:09.5997342Z             },
2026-06-21T07:19:09.5997439Z             {
2026-06-21T07:19:09.5997581Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5997691Z               "line": 229
2026-06-21T07:19:09.5997797Z             },
2026-06-21T07:19:09.5997900Z             {
2026-06-21T07:19:09.5998045Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5998140Z               "line": 239
2026-06-21T07:19:09.5998238Z             },
2026-06-21T07:19:09.5998333Z             {
2026-06-21T07:19:09.5998480Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T07:19:09.5998579Z               "line": 249
2026-06-21T07:19:09.5998694Z             }
2026-06-21T07:19:09.5998789Z           ]
2026-06-21T07:19:09.5998884Z         }
2026-06-21T07:19:09.5999057Z       }
2026-06-21T07:19:09.5999162Z     },
2026-06-21T07:19:09.5999766Z     {
2026-06-21T07:19:09.5999958Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T07:19:09.6000224Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T07:19:09.6000364Z       "requiredStages": [
2026-06-21T07:19:09.6000491Z         "impl",
2026-06-21T07:19:09.6000621Z         "unit"
2026-06-21T07:19:09.6000739Z       ],
2026-06-21T07:19:09.6000871Z       "stages": {
2026-06-21T07:19:09.6000996Z         "doc": {
2026-06-21T07:19:09.6001132Z           "complete": false,
2026-06-21T07:19:09.6001270Z           "evidence": []
2026-06-21T07:19:09.6001385Z         },
2026-06-21T07:19:09.6001508Z         "impl": {
2026-06-21T07:19:09.6001990Z           "complete": true,
2026-06-21T07:19:09.6002123Z           "evidence": [
2026-06-21T07:19:09.6002244Z             {
2026-06-21T07:19:09.6002423Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6002568Z               "line": 14
2026-06-21T07:19:09.6002691Z             },
2026-06-21T07:19:09.6002939Z             {
2026-06-21T07:19:09.6003106Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6003236Z               "line": 63
2026-06-21T07:19:09.6003363Z             }
2026-06-21T07:19:09.6003488Z           ]
2026-06-21T07:19:09.6003602Z         },
2026-06-21T07:19:09.6003720Z         "int": {
2026-06-21T07:19:09.6003868Z           "complete": false,
2026-06-21T07:19:09.6004006Z           "evidence": []
2026-06-21T07:19:09.6004135Z         },
2026-06-21T07:19:09.6004259Z         "unit": {
2026-06-21T07:19:09.6004387Z           "complete": true,
2026-06-21T07:19:09.6004526Z           "evidence": [
2026-06-21T07:19:09.6004644Z             {
2026-06-21T07:19:09.6004827Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6004950Z               "line": 164
2026-06-21T07:19:09.6005074Z             },
2026-06-21T07:19:09.6005189Z             {
2026-06-21T07:19:09.6005365Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6005508Z               "line": 198
2026-06-21T07:19:09.6005632Z             },
2026-06-21T07:19:09.6005753Z             {
2026-06-21T07:19:09.6005913Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6006045Z               "line": 220
2026-06-21T07:19:09.6006173Z             }
2026-06-21T07:19:09.6006300Z           ]
2026-06-21T07:19:09.6006425Z         }
2026-06-21T07:19:09.6006539Z       }
2026-06-21T07:19:09.6006658Z     },
2026-06-21T07:19:09.6006779Z     {
2026-06-21T07:19:09.6006944Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T07:19:09.6008889Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T07:19:09.6009148Z       "requiredStages": [],
2026-06-21T07:19:09.6009282Z       "stages": {
2026-06-21T07:19:09.6009411Z         "doc": {
2026-06-21T07:19:09.6009554Z           "complete": true,
2026-06-21T07:19:09.6009688Z           "evidence": [
2026-06-21T07:19:09.6009797Z             {
2026-06-21T07:19:09.6009965Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6010102Z               "line": 165
2026-06-21T07:19:09.6010232Z             }
2026-06-21T07:19:09.6010350Z           ]
2026-06-21T07:19:09.6010465Z         },
2026-06-21T07:19:09.6010594Z         "impl": {
2026-06-21T07:19:09.6010732Z           "complete": false,
2026-06-21T07:19:09.6010881Z           "evidence": []
2026-06-21T07:19:09.6011003Z         },
2026-06-21T07:19:09.6011133Z         "int": {
2026-06-21T07:19:09.6011258Z           "complete": false,
2026-06-21T07:19:09.6011394Z           "evidence": []
2026-06-21T07:19:09.6011527Z         },
2026-06-21T07:19:09.6011654Z         "unit": {
2026-06-21T07:19:09.6011802Z           "complete": false,
2026-06-21T07:19:09.6011917Z           "evidence": []
2026-06-21T07:19:09.6012011Z         }
2026-06-21T07:19:09.6012116Z       }
2026-06-21T07:19:09.6012226Z     },
2026-06-21T07:19:09.6012325Z     {
2026-06-21T07:19:09.6012465Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T07:19:09.6012712Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T07:19:09.6012832Z       "requiredStages": [
2026-06-21T07:19:09.6012932Z         "impl",
2026-06-21T07:19:09.6013036Z         "unit"
2026-06-21T07:19:09.6013147Z       ],
2026-06-21T07:19:09.6013252Z       "stages": {
2026-06-21T07:19:09.6013457Z         "doc": {
2026-06-21T07:19:09.6013575Z           "complete": false,
2026-06-21T07:19:09.6013676Z           "evidence": []
2026-06-21T07:19:09.6013782Z         },
2026-06-21T07:19:09.6013884Z         "impl": {
2026-06-21T07:19:09.6013995Z           "complete": true,
2026-06-21T07:19:09.6014101Z           "evidence": [
2026-06-21T07:19:09.6014299Z             {
2026-06-21T07:19:09.6014452Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6014566Z               "line": 76
2026-06-21T07:19:09.6014671Z             },
2026-06-21T07:19:09.6014767Z             {
2026-06-21T07:19:09.6014909Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6015015Z               "line": 167
2026-06-21T07:19:09.6015119Z             },
2026-06-21T07:19:09.6015224Z             {
2026-06-21T07:19:09.6015363Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6019363Z               "line": 233
2026-06-21T07:19:09.6019492Z             },
2026-06-21T07:19:09.6019619Z             {
2026-06-21T07:19:09.6019790Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6019905Z               "line": 272
2026-06-21T07:19:09.6020005Z             }
2026-06-21T07:19:09.6020100Z           ]
2026-06-21T07:19:09.6020206Z         },
2026-06-21T07:19:09.6020310Z         "int": {
2026-06-21T07:19:09.6020439Z           "complete": false,
2026-06-21T07:19:09.6020544Z           "evidence": []
2026-06-21T07:19:09.6020648Z         },
2026-06-21T07:19:09.6020758Z         "unit": {
2026-06-21T07:19:09.6020854Z           "complete": true,
2026-06-21T07:19:09.6020968Z           "evidence": [
2026-06-21T07:19:09.6021073Z             {
2026-06-21T07:19:09.6021225Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6021330Z               "line": 321
2026-06-21T07:19:09.6021432Z             },
2026-06-21T07:19:09.6021526Z             {
2026-06-21T07:19:09.6021669Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6021789Z               "line": 329
2026-06-21T07:19:09.6021892Z             },
2026-06-21T07:19:09.6022001Z             {
2026-06-21T07:19:09.6022149Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6022252Z               "line": 356
2026-06-21T07:19:09.6022352Z             },
2026-06-21T07:19:09.6022462Z             {
2026-06-21T07:19:09.6022604Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6022715Z               "line": 395
2026-06-21T07:19:09.6022820Z             },
2026-06-21T07:19:09.6022924Z             {
2026-06-21T07:19:09.6023059Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6023168Z               "line": 406
2026-06-21T07:19:09.6023272Z             },
2026-06-21T07:19:09.6023378Z             {
2026-06-21T07:19:09.6023511Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6023615Z               "line": 418
2026-06-21T07:19:09.6023717Z             },
2026-06-21T07:19:09.6023802Z             {
2026-06-21T07:19:09.6023955Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T07:19:09.6024064Z               "line": 442
2026-06-21T07:19:09.6024169Z             }
2026-06-21T07:19:09.6024275Z           ]
2026-06-21T07:19:09.6024379Z         }
2026-06-21T07:19:09.6024469Z       }
2026-06-21T07:19:09.6024575Z     },
2026-06-21T07:19:09.6024676Z     {
2026-06-21T07:19:09.6024802Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T07:19:09.6024984Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T07:19:09.6025088Z       "requiredStages": [
2026-06-21T07:19:09.6025183Z         "impl",
2026-06-21T07:19:09.6025289Z         "int"
2026-06-21T07:19:09.6025394Z       ],
2026-06-21T07:19:09.6025503Z       "stages": {
2026-06-21T07:19:09.6025609Z         "doc": {
2026-06-21T07:19:09.6025723Z           "complete": false,
2026-06-21T07:19:09.6025827Z           "evidence": []
2026-06-21T07:19:09.6025928Z         },
2026-06-21T07:19:09.6026032Z         "impl": {
2026-06-21T07:19:09.6026276Z           "complete": true,
2026-06-21T07:19:09.6026390Z           "evidence": [
2026-06-21T07:19:09.6026495Z             {
2026-06-21T07:19:09.6026638Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6026742Z               "line": 22
2026-06-21T07:19:09.6026848Z             }
2026-06-21T07:19:09.6027052Z           ]
2026-06-21T07:19:09.6027152Z         },
2026-06-21T07:19:09.6027261Z         "int": {
2026-06-21T07:19:09.6027364Z           "complete": true,
2026-06-21T07:19:09.6027478Z           "evidence": [
2026-06-21T07:19:09.6027574Z             {
2026-06-21T07:19:09.6027731Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T07:19:09.6027841Z               "line": 18
2026-06-21T07:19:09.6027946Z             }
2026-06-21T07:19:09.6028041Z           ]
2026-06-21T07:19:09.6028127Z         },
2026-06-21T07:19:09.6028232Z         "unit": {
2026-06-21T07:19:09.6028346Z           "complete": false,
2026-06-21T07:19:09.6028447Z           "evidence": []
2026-06-21T07:19:09.6028561Z         }
2026-06-21T07:19:09.6028651Z       }
2026-06-21T07:19:09.6028752Z     },
2026-06-21T07:19:09.6028847Z     {
2026-06-21T07:19:09.6029081Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T07:19:09.6029319Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T07:19:09.6029445Z       "requiredStages": [
2026-06-21T07:19:09.6029552Z         "impl",
2026-06-21T07:19:09.6029653Z         "unit"
2026-06-21T07:19:09.6029754Z       ],
2026-06-21T07:19:09.6029853Z       "stages": {
2026-06-21T07:19:09.6029956Z         "doc": {
2026-06-21T07:19:09.6030071Z           "complete": false,
2026-06-21T07:19:09.6030179Z           "evidence": []
2026-06-21T07:19:09.6030288Z         },
2026-06-21T07:19:09.6030384Z         "impl": {
2026-06-21T07:19:09.6030494Z           "complete": true,
2026-06-21T07:19:09.6030598Z           "evidence": [
2026-06-21T07:19:09.6030709Z             {
2026-06-21T07:19:09.6030851Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6030965Z               "line": 465
2026-06-21T07:19:09.6031066Z             },
2026-06-21T07:19:09.6031161Z             {
2026-06-21T07:19:09.6031304Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.6031395Z               "line": 27
2026-06-21T07:19:09.6031500Z             }
2026-06-21T07:19:09.6031599Z           ]
2026-06-21T07:19:09.6031705Z         },
2026-06-21T07:19:09.6031800Z         "int": {
2026-06-21T07:19:09.6031895Z           "complete": false,
2026-06-21T07:19:09.6031997Z           "evidence": []
2026-06-21T07:19:09.6032100Z         },
2026-06-21T07:19:09.6032205Z         "unit": {
2026-06-21T07:19:09.6032312Z           "complete": true,
2026-06-21T07:19:09.6032424Z           "evidence": [
2026-06-21T07:19:09.6032528Z             {
2026-06-21T07:19:09.6032671Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6032784Z               "line": 990
2026-06-21T07:19:09.6032878Z             },
2026-06-21T07:19:09.6032984Z             {
2026-06-21T07:19:09.6033122Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.6033226Z               "line": 181
2026-06-21T07:19:09.6033323Z             }
2026-06-21T07:19:09.6033413Z           ]
2026-06-21T07:19:09.6033518Z         }
2026-06-21T07:19:09.6033628Z       }
2026-06-21T07:19:09.6033733Z     },
2026-06-21T07:19:09.6033832Z     {
2026-06-21T07:19:09.6033966Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T07:19:09.6034147Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T07:19:09.6034258Z       "requiredStages": [
2026-06-21T07:19:09.6034367Z         "impl",
2026-06-21T07:19:09.6034471Z         "unit"
2026-06-21T07:19:09.6034577Z       ],
2026-06-21T07:19:09.6034671Z       "stages": {
2026-06-21T07:19:09.6034772Z         "doc": {
2026-06-21T07:19:09.6034883Z           "complete": false,
2026-06-21T07:19:09.6034986Z           "evidence": []
2026-06-21T07:19:09.6035091Z         },
2026-06-21T07:19:09.6035301Z         "impl": {
2026-06-21T07:19:09.6035419Z           "complete": true,
2026-06-21T07:19:09.6035515Z           "evidence": [
2026-06-21T07:19:09.6035616Z             {
2026-06-21T07:19:09.6035772Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.6035869Z               "line": 73
2026-06-21T07:19:09.6036072Z             },
2026-06-21T07:19:09.6036169Z             {
2026-06-21T07:19:09.6036316Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.6036425Z               "line": 972
2026-06-21T07:19:09.6036531Z             },
2026-06-21T07:19:09.6036631Z             {
2026-06-21T07:19:09.6036798Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6036916Z               "line": 20
2026-06-21T07:19:09.6036997Z             },
2026-06-21T07:19:09.6037103Z             {
2026-06-21T07:19:09.6037240Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6037351Z               "line": 100
2026-06-21T07:19:09.6037466Z             },
2026-06-21T07:19:09.6037569Z             {
2026-06-21T07:19:09.6037712Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.6037812Z               "line": 603
2026-06-21T07:19:09.6037919Z             },
2026-06-21T07:19:09.6038024Z             {
2026-06-21T07:19:09.6038182Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T07:19:09.6038291Z               "line": 68
2026-06-21T07:19:09.6038391Z             },
2026-06-21T07:19:09.6038482Z             {
2026-06-21T07:19:09.6038625Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T07:19:09.6038741Z               "line": 80
2026-06-21T07:19:09.6038845Z             }
2026-06-21T07:19:09.6039017Z           ]
2026-06-21T07:19:09.6039126Z         },
2026-06-21T07:19:09.6039220Z         "int": {
2026-06-21T07:19:09.6039341Z           "complete": true,
2026-06-21T07:19:09.6039450Z           "evidence": [
2026-06-21T07:19:09.6039555Z             {
2026-06-21T07:19:09.6039699Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T07:19:09.6039817Z               "line": 44
2026-06-21T07:19:09.6039927Z             }
2026-06-21T07:19:09.6040019Z           ]
2026-06-21T07:19:09.6040117Z         },
2026-06-21T07:19:09.6040223Z         "unit": {
2026-06-21T07:19:09.6040338Z           "complete": true,
2026-06-21T07:19:09.6040455Z           "evidence": [
2026-06-21T07:19:09.6040559Z             {
2026-06-21T07:19:09.6040711Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.6040815Z               "line": 1181
2026-06-21T07:19:09.6040915Z             },
2026-06-21T07:19:09.6041021Z             {
2026-06-21T07:19:09.6041172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.6041283Z               "line": 1197
2026-06-21T07:19:09.6041383Z             },
2026-06-21T07:19:09.6041487Z             {
2026-06-21T07:19:09.6041631Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6041740Z               "line": 2399
2026-06-21T07:19:09.6041850Z             },
2026-06-21T07:19:09.6041946Z             {
2026-06-21T07:19:09.6042083Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6042184Z               "line": 152
2026-06-21T07:19:09.6042279Z             },
2026-06-21T07:19:09.6042374Z             {
2026-06-21T07:19:09.6042523Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6042632Z               "line": 175
2026-06-21T07:19:09.6042737Z             },
2026-06-21T07:19:09.6042847Z             {
2026-06-21T07:19:09.6042980Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6043088Z               "line": 186
2026-06-21T07:19:09.6043189Z             },
2026-06-21T07:19:09.6043297Z             {
2026-06-21T07:19:09.6043429Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6043534Z               "line": 202
2026-06-21T07:19:09.6043635Z             },
2026-06-21T07:19:09.6043729Z             {
2026-06-21T07:19:09.6044006Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T07:19:09.6044116Z               "line": 216
2026-06-21T07:19:09.6044212Z             },
2026-06-21T07:19:09.6044312Z             {
2026-06-21T07:19:09.6044465Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T07:19:09.6044674Z               "line": 137
2026-06-21T07:19:09.6044765Z             },
2026-06-21T07:19:09.6044860Z             {
2026-06-21T07:19:09.6044984Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6045095Z               "line": 8152
2026-06-21T07:19:09.6045198Z             },
2026-06-21T07:19:09.6045308Z             {
2026-06-21T07:19:09.6045447Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T07:19:09.6045546Z               "line": 30
2026-06-21T07:19:09.6045646Z             },
2026-06-21T07:19:09.6045753Z             {
2026-06-21T07:19:09.6045894Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T07:19:09.6046003Z               "line": 73
2026-06-21T07:19:09.6046109Z             }
2026-06-21T07:19:09.6046213Z           ]
2026-06-21T07:19:09.6046298Z         }
2026-06-21T07:19:09.6046404Z       }
2026-06-21T07:19:09.6046505Z     },
2026-06-21T07:19:09.6046608Z     {
2026-06-21T07:19:09.6046762Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T07:19:09.6051105Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T07:19:09.6051244Z       "requiredStages": [
2026-06-21T07:19:09.6051342Z         "impl",
2026-06-21T07:19:09.6051441Z         "unit",
2026-06-21T07:19:09.6051543Z         "int"
2026-06-21T07:19:09.6051647Z       ],
2026-06-21T07:19:09.6051747Z       "stages": {
2026-06-21T07:19:09.6051858Z         "doc": {
2026-06-21T07:19:09.6051985Z           "complete": false,
2026-06-21T07:19:09.6052090Z           "evidence": []
2026-06-21T07:19:09.6052187Z         },
2026-06-21T07:19:09.6052282Z         "impl": {
2026-06-21T07:19:09.6052400Z           "complete": true,
2026-06-21T07:19:09.6052511Z           "evidence": [
2026-06-21T07:19:09.6052624Z             {
2026-06-21T07:19:09.6052778Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6052877Z               "line": 510
2026-06-21T07:19:09.6052987Z             },
2026-06-21T07:19:09.6053083Z             {
2026-06-21T07:19:09.6053239Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6053340Z               "line": 704
2026-06-21T07:19:09.6053446Z             }
2026-06-21T07:19:09.6053540Z           ]
2026-06-21T07:19:09.6053634Z         },
2026-06-21T07:19:09.6053739Z         "int": {
2026-06-21T07:19:09.6053843Z           "complete": true,
2026-06-21T07:19:09.6053947Z           "evidence": [
2026-06-21T07:19:09.6054047Z             {
2026-06-21T07:19:09.6054303Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6054414Z               "line": 1119
2026-06-21T07:19:09.6054515Z             },
2026-06-21T07:19:09.6054623Z             {
2026-06-21T07:19:09.6054777Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T07:19:09.6054977Z               "line": 312
2026-06-21T07:19:09.6055063Z             }
2026-06-21T07:19:09.6055153Z           ]
2026-06-21T07:19:09.6055262Z         },
2026-06-21T07:19:09.6055364Z         "unit": {
2026-06-21T07:19:09.6055473Z           "complete": true,
2026-06-21T07:19:09.6055582Z           "evidence": [
2026-06-21T07:19:09.6055684Z             {
2026-06-21T07:19:09.6055825Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6055931Z               "line": 821
2026-06-21T07:19:09.6056036Z             }
2026-06-21T07:19:09.6056140Z           ]
2026-06-21T07:19:09.6056246Z         }
2026-06-21T07:19:09.6056332Z       }
2026-06-21T07:19:09.6056444Z     },
2026-06-21T07:19:09.6056544Z     {
2026-06-21T07:19:09.6056664Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T07:19:09.6056936Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T07:19:09.6057045Z       "requiredStages": [
2026-06-21T07:19:09.6057159Z         "impl",
2026-06-21T07:19:09.6057261Z         "unit"
2026-06-21T07:19:09.6057370Z       ],
2026-06-21T07:19:09.6057474Z       "stages": {
2026-06-21T07:19:09.6057580Z         "doc": {
2026-06-21T07:19:09.6057684Z           "complete": true,
2026-06-21T07:19:09.6057793Z           "evidence": [
2026-06-21T07:19:09.6057895Z             {
2026-06-21T07:19:09.6058027Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6058146Z               "line": 133
2026-06-21T07:19:09.6058238Z             }
2026-06-21T07:19:09.6058337Z           ]
2026-06-21T07:19:09.6058437Z         },
2026-06-21T07:19:09.6058539Z         "impl": {
2026-06-21T07:19:09.6058656Z           "complete": true,
2026-06-21T07:19:09.6058765Z           "evidence": [
2026-06-21T07:19:09.6058870Z             {
2026-06-21T07:19:09.6059068Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6059173Z               "line": 65
2026-06-21T07:19:09.6059279Z             },
2026-06-21T07:19:09.6059387Z             {
2026-06-21T07:19:09.6059516Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6059622Z               "line": 17
2026-06-21T07:19:09.6059716Z             },
2026-06-21T07:19:09.6059813Z             {
2026-06-21T07:19:09.6059960Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.6060064Z               "line": 146
2026-06-21T07:19:09.6060166Z             },
2026-06-21T07:19:09.6060270Z             {
2026-06-21T07:19:09.6060413Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6060523Z               "line": 310
2026-06-21T07:19:09.6060623Z             },
2026-06-21T07:19:09.6060718Z             {
2026-06-21T07:19:09.6060871Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6060975Z               "line": 441
2026-06-21T07:19:09.6061077Z             },
2026-06-21T07:19:09.6061181Z             {
2026-06-21T07:19:09.6061314Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.6061415Z               "line": 32
2026-06-21T07:19:09.6061524Z             },
2026-06-21T07:19:09.6061633Z             {
2026-06-21T07:19:09.6061761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6061869Z               "line": 1283
2026-06-21T07:19:09.6061968Z             },
2026-06-21T07:19:09.6062074Z             {
2026-06-21T07:19:09.6062203Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6062302Z               "line": 6161
2026-06-21T07:19:09.6062404Z             },
2026-06-21T07:19:09.6062489Z             {
2026-06-21T07:19:09.6062612Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6062718Z               "line": 6443
2026-06-21T07:19:09.6062922Z             }
2026-06-21T07:19:09.6063028Z           ]
2026-06-21T07:19:09.6063122Z         },
2026-06-21T07:19:09.6063227Z         "int": {
2026-06-21T07:19:09.6063343Z           "complete": false,
2026-06-21T07:19:09.6063451Z           "evidence": []
2026-06-21T07:19:09.6063556Z         },
2026-06-21T07:19:09.6063757Z         "unit": {
2026-06-21T07:19:09.6063871Z           "complete": true,
2026-06-21T07:19:09.6063977Z           "evidence": [
2026-06-21T07:19:09.6064076Z             {
2026-06-21T07:19:09.6064204Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6064314Z               "line": 94
2026-06-21T07:19:09.6064403Z             },
2026-06-21T07:19:09.6064507Z             {
2026-06-21T07:19:09.6064641Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6064746Z               "line": 111
2026-06-21T07:19:09.6064845Z             },
2026-06-21T07:19:09.6064941Z             {
2026-06-21T07:19:09.6065065Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6065169Z               "line": 124
2026-06-21T07:19:09.6065271Z             },
2026-06-21T07:19:09.6065380Z             {
2026-06-21T07:19:09.6065508Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6065614Z               "line": 134
2026-06-21T07:19:09.6065723Z             },
2026-06-21T07:19:09.6065827Z             {
2026-06-21T07:19:09.6065966Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6066066Z               "line": 144
2026-06-21T07:19:09.6066161Z             },
2026-06-21T07:19:09.6066263Z             {
2026-06-21T07:19:09.6066385Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T07:19:09.6066491Z               "line": 156
2026-06-21T07:19:09.6066601Z             },
2026-06-21T07:19:09.6066695Z             {
2026-06-21T07:19:09.6066849Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6066962Z               "line": 746
2026-06-21T07:19:09.6067062Z             },
2026-06-21T07:19:09.6067171Z             {
2026-06-21T07:19:09.6067310Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.6067414Z               "line": 309
2026-06-21T07:19:09.6067505Z             }
2026-06-21T07:19:09.6067615Z           ]
2026-06-21T07:19:09.6067724Z         }
2026-06-21T07:19:09.6067830Z       }
2026-06-21T07:19:09.6067935Z     },
2026-06-21T07:19:09.6068020Z     {
2026-06-21T07:19:09.6068145Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T07:19:09.6068297Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T07:19:09.6068416Z       "requiredStages": [
2026-06-21T07:19:09.6068526Z         "impl",
2026-06-21T07:19:09.6068621Z         "unit"
2026-06-21T07:19:09.6068721Z       ],
2026-06-21T07:19:09.6068827Z       "stages": {
2026-06-21T07:19:09.6068930Z         "doc": {
2026-06-21T07:19:09.6069142Z           "complete": false,
2026-06-21T07:19:09.6069259Z           "evidence": []
2026-06-21T07:19:09.6069354Z         },
2026-06-21T07:19:09.6069449Z         "impl": {
2026-06-21T07:19:09.6069571Z           "complete": true,
2026-06-21T07:19:09.6069680Z           "evidence": [
2026-06-21T07:19:09.6069786Z             {
2026-06-21T07:19:09.6069919Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6070028Z               "line": 128
2026-06-21T07:19:09.6070135Z             }
2026-06-21T07:19:09.6070234Z           ]
2026-06-21T07:19:09.6070338Z         },
2026-06-21T07:19:09.6070445Z         "int": {
2026-06-21T07:19:09.6070558Z           "complete": false,
2026-06-21T07:19:09.6070653Z           "evidence": []
2026-06-21T07:19:09.6070754Z         },
2026-06-21T07:19:09.6070863Z         "unit": {
2026-06-21T07:19:09.6070968Z           "complete": true,
2026-06-21T07:19:09.6071083Z           "evidence": [
2026-06-21T07:19:09.6071169Z             {
2026-06-21T07:19:09.6071297Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6071398Z               "line": 205
2026-06-21T07:19:09.6071502Z             }
2026-06-21T07:19:09.6071708Z           ]
2026-06-21T07:19:09.6071802Z         }
2026-06-21T07:19:09.6071898Z       }
2026-06-21T07:19:09.6071985Z     },
2026-06-21T07:19:09.6072094Z     {
2026-06-21T07:19:09.6072231Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T07:19:09.6072401Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T07:19:09.6072629Z       "requiredStages": [
2026-06-21T07:19:09.6072730Z         "impl",
2026-06-21T07:19:09.6072833Z         "unit"
2026-06-21T07:19:09.6072939Z       ],
2026-06-21T07:19:09.6073044Z       "stages": {
2026-06-21T07:19:09.6073138Z         "doc": {
2026-06-21T07:19:09.6073245Z           "complete": false,
2026-06-21T07:19:09.6073349Z           "evidence": []
2026-06-21T07:19:09.6073453Z         },
2026-06-21T07:19:09.6073564Z         "impl": {
2026-06-21T07:19:09.6073664Z           "complete": true,
2026-06-21T07:19:09.6073773Z           "evidence": [
2026-06-21T07:19:09.6073879Z             {
2026-06-21T07:19:09.6074016Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6074131Z               "line": 367
2026-06-21T07:19:09.6074232Z             },
2026-06-21T07:19:09.6074326Z             {
2026-06-21T07:19:09.6074455Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6074566Z               "line": 378
2026-06-21T07:19:09.6074674Z             },
2026-06-21T07:19:09.6074778Z             {
2026-06-21T07:19:09.6074917Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6075014Z               "line": 396
2026-06-21T07:19:09.6075109Z             }
2026-06-21T07:19:09.6075215Z           ]
2026-06-21T07:19:09.6075320Z         },
2026-06-21T07:19:09.6075415Z         "int": {
2026-06-21T07:19:09.6075526Z           "complete": false,
2026-06-21T07:19:09.6075635Z           "evidence": []
2026-06-21T07:19:09.6075729Z         },
2026-06-21T07:19:09.6075836Z         "unit": {
2026-06-21T07:19:09.6075950Z           "complete": true,
2026-06-21T07:19:09.6076063Z           "evidence": [
2026-06-21T07:19:09.6076169Z             {
2026-06-21T07:19:09.6076307Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6076416Z               "line": 420
2026-06-21T07:19:09.6076513Z             },
2026-06-21T07:19:09.6076612Z             {
2026-06-21T07:19:09.6076746Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6076865Z               "line": 441
2026-06-21T07:19:09.6076950Z             },
2026-06-21T07:19:09.6077051Z             {
2026-06-21T07:19:09.6077184Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6077289Z               "line": 811
2026-06-21T07:19:09.6077395Z             },
2026-06-21T07:19:09.6077490Z             {
2026-06-21T07:19:09.6077631Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6077736Z               "line": 822
2026-06-21T07:19:09.6077842Z             },
2026-06-21T07:19:09.6077951Z             {
2026-06-21T07:19:09.6078075Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6078180Z               "line": 835
2026-06-21T07:19:09.6078265Z             }
2026-06-21T07:19:09.6078371Z           ]
2026-06-21T07:19:09.6078471Z         }
2026-06-21T07:19:09.6078580Z       }
2026-06-21T07:19:09.6078680Z     },
2026-06-21T07:19:09.6078766Z     {
2026-06-21T07:19:09.6078914Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T07:19:09.6086677Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T07:19:09.6087054Z       "requiredStages": [
2026-06-21T07:19:09.6087163Z         "impl",
2026-06-21T07:19:09.6087272Z         "unit",
2026-06-21T07:19:09.6087364Z         "int"
2026-06-21T07:19:09.6087462Z       ],
2026-06-21T07:19:09.6087582Z       "stages": {
2026-06-21T07:19:09.6087684Z         "doc": {
2026-06-21T07:19:09.6087796Z           "complete": false,
2026-06-21T07:19:09.6087902Z           "evidence": []
2026-06-21T07:19:09.6088003Z         },
2026-06-21T07:19:09.6088101Z         "impl": {
2026-06-21T07:19:09.6088219Z           "complete": true,
2026-06-21T07:19:09.6088320Z           "evidence": [
2026-06-21T07:19:09.6088426Z             {
2026-06-21T07:19:09.6088577Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6088683Z               "line": 335
2026-06-21T07:19:09.6088782Z             },
2026-06-21T07:19:09.6088868Z             {
2026-06-21T07:19:09.6089111Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6089231Z               "line": 762
2026-06-21T07:19:09.6089336Z             },
2026-06-21T07:19:09.6089440Z             {
2026-06-21T07:19:09.6089575Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6089688Z               "line": 1026
2026-06-21T07:19:09.6089803Z             }
2026-06-21T07:19:09.6089909Z           ]
2026-06-21T07:19:09.6090017Z         },
2026-06-21T07:19:09.6090113Z         "int": {
2026-06-21T07:19:09.6090224Z           "complete": true,
2026-06-21T07:19:09.6090318Z           "evidence": [
2026-06-21T07:19:09.6090427Z             {
2026-06-21T07:19:09.6090612Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.6090711Z               "line": 256
2026-06-21T07:19:09.6090820Z             },
2026-06-21T07:19:09.6090921Z             {
2026-06-21T07:19:09.6091091Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.6091183Z               "line": 382
2026-06-21T07:19:09.6091288Z             }
2026-06-21T07:19:09.6091392Z           ]
2026-06-21T07:19:09.6091493Z         },
2026-06-21T07:19:09.6091593Z         "unit": {
2026-06-21T07:19:09.6091702Z           "complete": true,
2026-06-21T07:19:09.6091808Z           "evidence": [
2026-06-21T07:19:09.6092017Z             {
2026-06-21T07:19:09.6092170Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6092284Z               "line": 2427
2026-06-21T07:19:09.6092388Z             },
2026-06-21T07:19:09.6092499Z             {
2026-06-21T07:19:09.6092642Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6092852Z               "line": 2485
2026-06-21T07:19:09.6092951Z             }
2026-06-21T07:19:09.6093048Z           ]
2026-06-21T07:19:09.6093148Z         }
2026-06-21T07:19:09.6093256Z       }
2026-06-21T07:19:09.6093365Z     },
2026-06-21T07:19:09.6093465Z     {
2026-06-21T07:19:09.6093634Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T07:19:09.6101091Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T07:19:09.6101299Z       "requiredStages": [
2026-06-21T07:19:09.6101409Z         "doc",
2026-06-21T07:19:09.6101520Z         "impl",
2026-06-21T07:19:09.6101623Z         "unit",
2026-06-21T07:19:09.6101738Z         "int"
2026-06-21T07:19:09.6101843Z       ],
2026-06-21T07:19:09.6101947Z       "stages": {
2026-06-21T07:19:09.6102053Z         "doc": {
2026-06-21T07:19:09.6102167Z           "complete": true,
2026-06-21T07:19:09.6102281Z           "evidence": [
2026-06-21T07:19:09.6102383Z             {
2026-06-21T07:19:09.6102529Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6102639Z               "line": 454
2026-06-21T07:19:09.6102745Z             }
2026-06-21T07:19:09.6102844Z           ]
2026-06-21T07:19:09.6102949Z         },
2026-06-21T07:19:09.6103055Z         "impl": {
2026-06-21T07:19:09.6103163Z           "complete": true,
2026-06-21T07:19:09.6103384Z           "evidence": [
2026-06-21T07:19:09.6103497Z             {
2026-06-21T07:19:09.6103646Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6103760Z               "line": 203
2026-06-21T07:19:09.6103859Z             },
2026-06-21T07:19:09.6103963Z             {
2026-06-21T07:19:09.6104199Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6104310Z               "line": 487
2026-06-21T07:19:09.6104410Z             },
2026-06-21T07:19:09.6104519Z             {
2026-06-21T07:19:09.6104672Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6104781Z               "line": 1822
2026-06-21T07:19:09.6104886Z             },
2026-06-21T07:19:09.6104977Z             {
2026-06-21T07:19:09.6105120Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.6105220Z               "line": 331
2026-06-21T07:19:09.6105326Z             }
2026-06-21T07:19:09.6105430Z           ]
2026-06-21T07:19:09.6105530Z         },
2026-06-21T07:19:09.6105640Z         "int": {
2026-06-21T07:19:09.6105749Z           "complete": true,
2026-06-21T07:19:09.6105860Z           "evidence": [
2026-06-21T07:19:09.6105965Z             {
2026-06-21T07:19:09.6106121Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.6106228Z               "line": 737
2026-06-21T07:19:09.6106341Z             },
2026-06-21T07:19:09.6106449Z             {
2026-06-21T07:19:09.6106602Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.6106714Z               "line": 854
2026-06-21T07:19:09.6106814Z             },
2026-06-21T07:19:09.6106915Z             {
2026-06-21T07:19:09.6107100Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.6107206Z               "line": 544
2026-06-21T07:19:09.6107316Z             },
2026-06-21T07:19:09.6107414Z             {
2026-06-21T07:19:09.6107592Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.6107705Z               "line": 1800
2026-06-21T07:19:09.6107812Z             },
2026-06-21T07:19:09.6107921Z             {
2026-06-21T07:19:09.6108092Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T07:19:09.6108198Z               "line": 266
2026-06-21T07:19:09.6108297Z             }
2026-06-21T07:19:09.6108407Z           ]
2026-06-21T07:19:09.6108508Z         },
2026-06-21T07:19:09.6108616Z         "unit": {
2026-06-21T07:19:09.6108736Z           "complete": true,
2026-06-21T07:19:09.6108842Z           "evidence": [
2026-06-21T07:19:09.6109012Z             {
2026-06-21T07:19:09.6109142Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.6109255Z               "line": 985
2026-06-21T07:19:09.6109359Z             },
2026-06-21T07:19:09.6109460Z             {
2026-06-21T07:19:09.6109602Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.6109712Z               "line": 1019
2026-06-21T07:19:09.6109817Z             }
2026-06-21T07:19:09.6109917Z           ]
2026-06-21T07:19:09.6110022Z         }
2026-06-21T07:19:09.6110132Z       }
2026-06-21T07:19:09.6110223Z     },
2026-06-21T07:19:09.6110327Z     {
2026-06-21T07:19:09.6110457Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T07:19:09.6111082Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T07:19:09.6111214Z       "requiredStages": [
2026-06-21T07:19:09.6111315Z         "impl",
2026-06-21T07:19:09.6111420Z         "unit"
2026-06-21T07:19:09.6111523Z       ],
2026-06-21T07:19:09.6111633Z       "stages": {
2026-06-21T07:19:09.6111737Z         "doc": {
2026-06-21T07:19:09.6111859Z           "complete": false,
2026-06-21T07:19:09.6111969Z           "evidence": []
2026-06-21T07:19:09.6112065Z         },
2026-06-21T07:19:09.6112174Z         "impl": {
2026-06-21T07:19:09.6112279Z           "complete": true,
2026-06-21T07:19:09.6112488Z           "evidence": [
2026-06-21T07:19:09.6112594Z             {
2026-06-21T07:19:09.6112752Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6112865Z               "line": 759
2026-06-21T07:19:09.6112971Z             }
2026-06-21T07:19:09.6113180Z           ]
2026-06-21T07:19:09.6113286Z         },
2026-06-21T07:19:09.6113395Z         "int": {
2026-06-21T07:19:09.6113504Z           "complete": false,
2026-06-21T07:19:09.6113620Z           "evidence": []
2026-06-21T07:19:09.6117110Z         },
2026-06-21T07:19:09.6117260Z         "unit": {
2026-06-21T07:19:09.6117388Z           "complete": true,
2026-06-21T07:19:09.6117504Z           "evidence": [
2026-06-21T07:19:09.6117617Z             {
2026-06-21T07:19:09.6117780Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6117899Z               "line": 873
2026-06-21T07:19:09.6118003Z             }
2026-06-21T07:19:09.6118109Z           ]
2026-06-21T07:19:09.6118218Z         }
2026-06-21T07:19:09.6118323Z       }
2026-06-21T07:19:09.6118429Z     },
2026-06-21T07:19:09.6118528Z     {
2026-06-21T07:19:09.6118696Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T07:19:09.6121279Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T07:19:09.6121417Z       "requiredStages": [
2026-06-21T07:19:09.6121522Z         "impl",
2026-06-21T07:19:09.6121628Z         "unit",
2026-06-21T07:19:09.6121735Z         "int"
2026-06-21T07:19:09.6121837Z       ],
2026-06-21T07:19:09.6121943Z       "stages": {
2026-06-21T07:19:09.6122050Z         "doc": {
2026-06-21T07:19:09.6122178Z           "complete": false,
2026-06-21T07:19:09.6122284Z           "evidence": []
2026-06-21T07:19:09.6122386Z         },
2026-06-21T07:19:09.6122485Z         "impl": {
2026-06-21T07:19:09.6122601Z           "complete": true,
2026-06-21T07:19:09.6122710Z           "evidence": [
2026-06-21T07:19:09.6122820Z             {
2026-06-21T07:19:09.6122973Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6123082Z               "line": 705
2026-06-21T07:19:09.6123183Z             }
2026-06-21T07:19:09.6123287Z           ]
2026-06-21T07:19:09.6123392Z         },
2026-06-21T07:19:09.6123498Z         "int": {
2026-06-21T07:19:09.6123616Z           "complete": true,
2026-06-21T07:19:09.6123725Z           "evidence": [
2026-06-21T07:19:09.6123832Z             {
2026-06-21T07:19:09.6124002Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T07:19:09.6124103Z               "line": 24
2026-06-21T07:19:09.6124208Z             }
2026-06-21T07:19:09.6124303Z           ]
2026-06-21T07:19:09.6124408Z         },
2026-06-21T07:19:09.6124509Z         "unit": {
2026-06-21T07:19:09.6124622Z           "complete": true,
2026-06-21T07:19:09.6124728Z           "evidence": [
2026-06-21T07:19:09.6124829Z             {
2026-06-21T07:19:09.6124979Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6125079Z               "line": 918
2026-06-21T07:19:09.6125179Z             }
2026-06-21T07:19:09.6125282Z           ]
2026-06-21T07:19:09.6125392Z         }
2026-06-21T07:19:09.6125497Z       }
2026-06-21T07:19:09.6125596Z     },
2026-06-21T07:19:09.6125706Z     {
2026-06-21T07:19:09.6125987Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T07:19:09.6129751Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T07:19:09.6129999Z       "requiredStages": [
2026-06-21T07:19:09.6130119Z         "impl",
2026-06-21T07:19:09.6130220Z         "unit",
2026-06-21T07:19:09.6130319Z         "int"
2026-06-21T07:19:09.6130413Z       ],
2026-06-21T07:19:09.6130527Z       "stages": {
2026-06-21T07:19:09.6130633Z         "doc": {
2026-06-21T07:19:09.6130746Z           "complete": false,
2026-06-21T07:19:09.6130866Z           "evidence": []
2026-06-21T07:19:09.6130957Z         },
2026-06-21T07:19:09.6131061Z         "impl": {
2026-06-21T07:19:09.6131177Z           "complete": true,
2026-06-21T07:19:09.6131295Z           "evidence": [
2026-06-21T07:19:09.6131390Z             {
2026-06-21T07:19:09.6131544Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6131658Z               "line": 391
2026-06-21T07:19:09.6131762Z             },
2026-06-21T07:19:09.6131868Z             {
2026-06-21T07:19:09.6132006Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6132111Z               "line": 343
2026-06-21T07:19:09.6132211Z             },
2026-06-21T07:19:09.6132310Z             {
2026-06-21T07:19:09.6132440Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6132550Z               "line": 1750
2026-06-21T07:19:09.6132662Z             },
2026-06-21T07:19:09.6132767Z             {
2026-06-21T07:19:09.6132895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6133003Z               "line": 3191
2026-06-21T07:19:09.6133108Z             }
2026-06-21T07:19:09.6133219Z           ]
2026-06-21T07:19:09.6133313Z         },
2026-06-21T07:19:09.6133419Z         "int": {
2026-06-21T07:19:09.6133533Z           "complete": true,
2026-06-21T07:19:09.6133642Z           "evidence": [
2026-06-21T07:19:09.6133743Z             {
2026-06-21T07:19:09.6133909Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T07:19:09.6134029Z               "line": 353
2026-06-21T07:19:09.6134125Z             },
2026-06-21T07:19:09.6134229Z             {
2026-06-21T07:19:09.6134401Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T07:19:09.6134520Z               "line": 23
2026-06-21T07:19:09.6134620Z             }
2026-06-21T07:19:09.6134716Z           ]
2026-06-21T07:19:09.6134815Z         },
2026-06-21T07:19:09.6134920Z         "unit": {
2026-06-21T07:19:09.6135026Z           "complete": true,
2026-06-21T07:19:09.6135135Z           "evidence": [
2026-06-21T07:19:09.6135240Z             {
2026-06-21T07:19:09.6135379Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6135487Z               "line": 743
2026-06-21T07:19:09.6135596Z             },
2026-06-21T07:19:09.6135696Z             {
2026-06-21T07:19:09.6135832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6136038Z               "line": 7863
2026-06-21T07:19:09.6136152Z             }
2026-06-21T07:19:09.6136261Z           ]
2026-06-21T07:19:09.6136362Z         }
2026-06-21T07:19:09.6136466Z       }
2026-06-21T07:19:09.6136566Z     },
2026-06-21T07:19:09.6136668Z     {
2026-06-21T07:19:09.6136886Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T07:19:09.6140330Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T07:19:09.6140470Z       "requiredStages": [
2026-06-21T07:19:09.6140582Z         "impl",
2026-06-21T07:19:09.6140688Z         "unit",
2026-06-21T07:19:09.6140790Z         "int"
2026-06-21T07:19:09.6140883Z       ],
2026-06-21T07:19:09.6140987Z       "stages": {
2026-06-21T07:19:09.6141092Z         "doc": {
2026-06-21T07:19:09.6141217Z           "complete": false,
2026-06-21T07:19:09.6141335Z           "evidence": []
2026-06-21T07:19:09.6141436Z         },
2026-06-21T07:19:09.6141546Z         "impl": {
2026-06-21T07:19:09.6141654Z           "complete": true,
2026-06-21T07:19:09.6141765Z           "evidence": [
2026-06-21T07:19:09.6141860Z             {
2026-06-21T07:19:09.6142013Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6142118Z               "line": 64
2026-06-21T07:19:09.6142223Z             },
2026-06-21T07:19:09.6142332Z             {
2026-06-21T07:19:09.6142475Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6142585Z               "line": 78
2026-06-21T07:19:09.6142686Z             },
2026-06-21T07:19:09.6142790Z             {
2026-06-21T07:19:09.6142942Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6143053Z               "line": 170
2026-06-21T07:19:09.6143157Z             },
2026-06-21T07:19:09.6143256Z             {
2026-06-21T07:19:09.6143399Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6143516Z               "line": 185
2026-06-21T07:19:09.6143625Z             },
2026-06-21T07:19:09.6143727Z             {
2026-06-21T07:19:09.6143863Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6143974Z               "line": 195
2026-06-21T07:19:09.6144079Z             },
2026-06-21T07:19:09.6144188Z             {
2026-06-21T07:19:09.6144342Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6144446Z               "line": 205
2026-06-21T07:19:09.6144550Z             },
2026-06-21T07:19:09.6144651Z             {
2026-06-21T07:19:09.6144804Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6144908Z               "line": 294
2026-06-21T07:19:09.6145014Z             },
2026-06-21T07:19:09.6145118Z             {
2026-06-21T07:19:09.6145267Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6145385Z               "line": 308
2026-06-21T07:19:09.6145485Z             },
2026-06-21T07:19:09.6145591Z             {
2026-06-21T07:19:09.6145843Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6145963Z               "line": 377
2026-06-21T07:19:09.6146070Z             },
2026-06-21T07:19:09.6146170Z             {
2026-06-21T07:19:09.6146322Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6146526Z               "line": 437
2026-06-21T07:19:09.6146627Z             },
2026-06-21T07:19:09.6146712Z             {
2026-06-21T07:19:09.6146865Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6146970Z               "line": 455
2026-06-21T07:19:09.6147074Z             }
2026-06-21T07:19:09.6147180Z           ]
2026-06-21T07:19:09.6147284Z         },
2026-06-21T07:19:09.6147393Z         "int": {
2026-06-21T07:19:09.6147509Z           "complete": true,
2026-06-21T07:19:09.6147618Z           "evidence": [
2026-06-21T07:19:09.6147727Z             {
2026-06-21T07:19:09.6147886Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T07:19:09.6148000Z               "line": 45
2026-06-21T07:19:09.6148095Z             },
2026-06-21T07:19:09.6148196Z             {
2026-06-21T07:19:09.6148343Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T07:19:09.6148453Z               "line": 354
2026-06-21T07:19:09.6148558Z             },
2026-06-21T07:19:09.6148666Z             {
2026-06-21T07:19:09.6148838Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T07:19:09.6149021Z               "line": 31
2026-06-21T07:19:09.6149126Z             }
2026-06-21T07:19:09.6149269Z           ]
2026-06-21T07:19:09.6149442Z         },
2026-06-21T07:19:09.6149556Z         "unit": {
2026-06-21T07:19:09.6149660Z           "complete": true,
2026-06-21T07:19:09.6149780Z           "evidence": [
2026-06-21T07:19:09.6149880Z             {
2026-06-21T07:19:09.6150033Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6150151Z               "line": 727
2026-06-21T07:19:09.6150251Z             }
2026-06-21T07:19:09.6150357Z           ]
2026-06-21T07:19:09.6150457Z         }
2026-06-21T07:19:09.6150561Z       }
2026-06-21T07:19:09.6150652Z     },
2026-06-21T07:19:09.6150758Z     {
2026-06-21T07:19:09.6150890Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T07:19:09.6151133Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T07:19:09.6151258Z       "requiredStages": [
2026-06-21T07:19:09.6151359Z         "impl",
2026-06-21T07:19:09.6151467Z         "unit"
2026-06-21T07:19:09.6151571Z       ],
2026-06-21T07:19:09.6151681Z       "stages": {
2026-06-21T07:19:09.6151782Z         "doc": {
2026-06-21T07:19:09.6151904Z           "complete": false,
2026-06-21T07:19:09.6152011Z           "evidence": []
2026-06-21T07:19:09.6152115Z         },
2026-06-21T07:19:09.6152224Z         "impl": {
2026-06-21T07:19:09.6152335Z           "complete": true,
2026-06-21T07:19:09.6152449Z           "evidence": [
2026-06-21T07:19:09.6152548Z             {
2026-06-21T07:19:09.6152692Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6152801Z               "line": 14
2026-06-21T07:19:09.6152907Z             },
2026-06-21T07:19:09.6153012Z             {
2026-06-21T07:19:09.6153150Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.6153256Z               "line": 566
2026-06-21T07:19:09.6153364Z             }
2026-06-21T07:19:09.6153464Z           ]
2026-06-21T07:19:09.6153570Z         },
2026-06-21T07:19:09.6153679Z         "int": {
2026-06-21T07:19:09.6153806Z           "complete": false,
2026-06-21T07:19:09.6153912Z           "evidence": []
2026-06-21T07:19:09.6154006Z         },
2026-06-21T07:19:09.6154114Z         "unit": {
2026-06-21T07:19:09.6154224Z           "complete": true,
2026-06-21T07:19:09.6154335Z           "evidence": [
2026-06-21T07:19:09.6154438Z             {
2026-06-21T07:19:09.6154577Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6154686Z               "line": 130
2026-06-21T07:19:09.6154926Z             },
2026-06-21T07:19:09.6155025Z             {
2026-06-21T07:19:09.6155159Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6155278Z               "line": 138
2026-06-21T07:19:09.6155378Z             },
2026-06-21T07:19:09.6155483Z             {
2026-06-21T07:19:09.6155721Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6155836Z               "line": 146
2026-06-21T07:19:09.6155945Z             },
2026-06-21T07:19:09.6156045Z             {
2026-06-21T07:19:09.6156184Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6156293Z               "line": 154
2026-06-21T07:19:09.6156404Z             },
2026-06-21T07:19:09.6156504Z             {
2026-06-21T07:19:09.6156640Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6156755Z               "line": 162
2026-06-21T07:19:09.6156864Z             },
2026-06-21T07:19:09.6156971Z             {
2026-06-21T07:19:09.6157106Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T07:19:09.6157230Z               "line": 170
2026-06-21T07:19:09.6157334Z             }
2026-06-21T07:19:09.6157440Z           ]
2026-06-21T07:19:09.6157540Z         }
2026-06-21T07:19:09.6157634Z       }
2026-06-21T07:19:09.6157736Z     },
2026-06-21T07:19:09.6157835Z     {
2026-06-21T07:19:09.6157987Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T07:19:09.6160312Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T07:19:09.6160450Z       "requiredStages": [
2026-06-21T07:19:09.6160568Z         "impl",
2026-06-21T07:19:09.6160674Z         "unit"
2026-06-21T07:19:09.6160783Z       ],
2026-06-21T07:19:09.6160878Z       "stages": {
2026-06-21T07:19:09.6160989Z         "doc": {
2026-06-21T07:19:09.6161094Z           "complete": false,
2026-06-21T07:19:09.6161212Z           "evidence": []
2026-06-21T07:19:09.6161314Z         },
2026-06-21T07:19:09.6161412Z         "impl": {
2026-06-21T07:19:09.6161537Z           "complete": true,
2026-06-21T07:19:09.6161652Z           "evidence": [
2026-06-21T07:19:09.6161756Z             {
2026-06-21T07:19:09.6161948Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6162050Z               "line": 34
2026-06-21T07:19:09.6162164Z             }
2026-06-21T07:19:09.6162256Z           ]
2026-06-21T07:19:09.6162360Z         },
2026-06-21T07:19:09.6162465Z         "int": {
2026-06-21T07:19:09.6162585Z           "complete": false,
2026-06-21T07:19:09.6162699Z           "evidence": []
2026-06-21T07:19:09.6162798Z         },
2026-06-21T07:19:09.6162909Z         "unit": {
2026-06-21T07:19:09.6163018Z           "complete": true,
2026-06-21T07:19:09.6163133Z           "evidence": [
2026-06-21T07:19:09.6163233Z             {
2026-06-21T07:19:09.6163414Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6163539Z               "line": 188
2026-06-21T07:19:09.6163633Z             },
2026-06-21T07:19:09.6163743Z             {
2026-06-21T07:19:09.6163910Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6164019Z               "line": 200
2026-06-21T07:19:09.6164130Z             },
2026-06-21T07:19:09.6164239Z             {
2026-06-21T07:19:09.6164404Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6164519Z               "line": 211
2026-06-21T07:19:09.6164627Z             },
2026-06-21T07:19:09.6164731Z             {
2026-06-21T07:19:09.6164904Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6165007Z               "line": 253
2026-06-21T07:19:09.6165113Z             },
2026-06-21T07:19:09.6165223Z             {
2026-06-21T07:19:09.6165385Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6165637Z               "line": 277
2026-06-21T07:19:09.6165734Z             },
2026-06-21T07:19:09.6165838Z             {
2026-06-21T07:19:09.6165995Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6166100Z               "line": 300
2026-06-21T07:19:09.6166205Z             },
2026-06-21T07:19:09.6166406Z             {
2026-06-21T07:19:09.6166586Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T07:19:09.6166702Z               "line": 316
2026-06-21T07:19:09.6166806Z             }
2026-06-21T07:19:09.6166906Z           ]
2026-06-21T07:19:09.6167017Z         }
2026-06-21T07:19:09.6167144Z       }
2026-06-21T07:19:09.6167243Z     },
2026-06-21T07:19:09.6167353Z     {
2026-06-21T07:19:09.6167494Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T07:19:09.6168085Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T07:19:09.6168223Z       "requiredStages": [
2026-06-21T07:19:09.6168329Z         "impl",
2026-06-21T07:19:09.6168434Z         "unit"
2026-06-21T07:19:09.6168537Z       ],
2026-06-21T07:19:09.6168643Z       "stages": {
2026-06-21T07:19:09.6168748Z         "doc": {
2026-06-21T07:19:09.6168877Z           "complete": false,
2026-06-21T07:19:09.6169086Z           "evidence": []
2026-06-21T07:19:09.6169617Z         },
2026-06-21T07:19:09.6169734Z         "impl": {
2026-06-21T07:19:09.6169852Z           "complete": true,
2026-06-21T07:19:09.6169967Z           "evidence": [
2026-06-21T07:19:09.6170075Z             {
2026-06-21T07:19:09.6170227Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6170334Z               "line": 29
2026-06-21T07:19:09.6170427Z             },
2026-06-21T07:19:09.6170538Z             {
2026-06-21T07:19:09.6170681Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6170795Z               "line": 174
2026-06-21T07:19:09.6170905Z             },
2026-06-21T07:19:09.6171010Z             {
2026-06-21T07:19:09.6171153Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6171263Z               "line": 194
2026-06-21T07:19:09.6171367Z             },
2026-06-21T07:19:09.6171467Z             {
2026-06-21T07:19:09.6171619Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6171724Z               "line": 222
2026-06-21T07:19:09.6171821Z             }
2026-06-21T07:19:09.6171920Z           ]
2026-06-21T07:19:09.6172025Z         },
2026-06-21T07:19:09.6172126Z         "int": {
2026-06-21T07:19:09.6172245Z           "complete": false,
2026-06-21T07:19:09.6172359Z           "evidence": []
2026-06-21T07:19:09.6172460Z         },
2026-06-21T07:19:09.6172564Z         "unit": {
2026-06-21T07:19:09.6172682Z           "complete": true,
2026-06-21T07:19:09.6172792Z           "evidence": [
2026-06-21T07:19:09.6172888Z             {
2026-06-21T07:19:09.6173025Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6173136Z               "line": 329
2026-06-21T07:19:09.6173240Z             },
2026-06-21T07:19:09.6173345Z             {
2026-06-21T07:19:09.6173484Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6173583Z               "line": 344
2026-06-21T07:19:09.6173698Z             },
2026-06-21T07:19:09.6173794Z             {
2026-06-21T07:19:09.6173926Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6174037Z               "line": 417
2026-06-21T07:19:09.6174141Z             },
2026-06-21T07:19:09.6174246Z             {
2026-06-21T07:19:09.6174376Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6174489Z               "line": 433
2026-06-21T07:19:09.6174594Z             },
2026-06-21T07:19:09.6174705Z             {
2026-06-21T07:19:09.6174837Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6174941Z               "line": 492
2026-06-21T07:19:09.6175168Z             },
2026-06-21T07:19:09.6175267Z             {
2026-06-21T07:19:09.6175412Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6175525Z               "line": 506
2026-06-21T07:19:09.6175626Z             },
2026-06-21T07:19:09.6175726Z             {
2026-06-21T07:19:09.6175974Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6176084Z               "line": 517
2026-06-21T07:19:09.6176183Z             },
2026-06-21T07:19:09.6176289Z             {
2026-06-21T07:19:09.6176427Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6176545Z               "line": 528
2026-06-21T07:19:09.6176647Z             }
2026-06-21T07:19:09.6176756Z           ]
2026-06-21T07:19:09.6176865Z         }
2026-06-21T07:19:09.6176967Z       }
2026-06-21T07:19:09.6177070Z     },
2026-06-21T07:19:09.6177170Z     {
2026-06-21T07:19:09.6177324Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T07:19:09.6178054Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T07:19:09.6178168Z       "requiredStages": [
2026-06-21T07:19:09.6178279Z         "impl",
2026-06-21T07:19:09.6178388Z         "unit"
2026-06-21T07:19:09.6178492Z       ],
2026-06-21T07:19:09.6178598Z       "stages": {
2026-06-21T07:19:09.6178707Z         "doc": {
2026-06-21T07:19:09.6178826Z           "complete": false,
2026-06-21T07:19:09.6178932Z           "evidence": []
2026-06-21T07:19:09.6179107Z         },
2026-06-21T07:19:09.6179218Z         "impl": {
2026-06-21T07:19:09.6179332Z           "complete": true,
2026-06-21T07:19:09.6179441Z           "evidence": [
2026-06-21T07:19:09.6179552Z             {
2026-06-21T07:19:09.6179713Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6179815Z               "line": 27
2026-06-21T07:19:09.6179914Z             },
2026-06-21T07:19:09.6180014Z             {
2026-06-21T07:19:09.6180177Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6180290Z               "line": 110
2026-06-21T07:19:09.6180389Z             },
2026-06-21T07:19:09.6180484Z             {
2026-06-21T07:19:09.6180635Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6180744Z               "line": 153
2026-06-21T07:19:09.6180850Z             },
2026-06-21T07:19:09.6180950Z             {
2026-06-21T07:19:09.6181098Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6181207Z               "line": 182
2026-06-21T07:19:09.6181316Z             },
2026-06-21T07:19:09.6181418Z             {
2026-06-21T07:19:09.6181594Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6181698Z               "line": 31
2026-06-21T07:19:09.6181808Z             },
2026-06-21T07:19:09.6181909Z             {
2026-06-21T07:19:09.6182081Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6182189Z               "line": 113
2026-06-21T07:19:09.6182294Z             },
2026-06-21T07:19:09.6182400Z             {
2026-06-21T07:19:09.6182571Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6182692Z               "line": 138
2026-06-21T07:19:09.6182786Z             }
2026-06-21T07:19:09.6182895Z           ]
2026-06-21T07:19:09.6183001Z         },
2026-06-21T07:19:09.6183106Z         "int": {
2026-06-21T07:19:09.6183228Z           "complete": false,
2026-06-21T07:19:09.6183333Z           "evidence": []
2026-06-21T07:19:09.6183444Z         },
2026-06-21T07:19:09.6183547Z         "unit": {
2026-06-21T07:19:09.6183671Z           "complete": true,
2026-06-21T07:19:09.6183777Z           "evidence": [
2026-06-21T07:19:09.6183881Z             {
2026-06-21T07:19:09.6184035Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6184144Z               "line": 261
2026-06-21T07:19:09.6184354Z             },
2026-06-21T07:19:09.6184459Z             {
2026-06-21T07:19:09.6184621Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6184730Z               "line": 276
2026-06-21T07:19:09.6184820Z             },
2026-06-21T07:19:09.6185021Z             {
2026-06-21T07:19:09.6185178Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6185280Z               "line": 293
2026-06-21T07:19:09.6185387Z             },
2026-06-21T07:19:09.6185491Z             {
2026-06-21T07:19:09.6185654Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6185761Z               "line": 310
2026-06-21T07:19:09.6185866Z             },
2026-06-21T07:19:09.6185967Z             {
2026-06-21T07:19:09.6186123Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6186238Z               "line": 327
2026-06-21T07:19:09.6186344Z             },
2026-06-21T07:19:09.6186457Z             {
2026-06-21T07:19:09.6186610Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.6186724Z               "line": 366
2026-06-21T07:19:09.6186830Z             },
2026-06-21T07:19:09.6186934Z             {
2026-06-21T07:19:09.6187106Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6187221Z               "line": 179
2026-06-21T07:19:09.6187330Z             },
2026-06-21T07:19:09.6187434Z             {
2026-06-21T07:19:09.6187606Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6187711Z               "line": 194
2026-06-21T07:19:09.6187822Z             },
2026-06-21T07:19:09.6187930Z             {
2026-06-21T07:19:09.6188099Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6188203Z               "line": 204
2026-06-21T07:19:09.6188307Z             },
2026-06-21T07:19:09.6188411Z             {
2026-06-21T07:19:09.6188572Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6188690Z               "line": 259
2026-06-21T07:19:09.6188800Z             },
2026-06-21T07:19:09.6188905Z             {
2026-06-21T07:19:09.6189163Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6189276Z               "line": 269
2026-06-21T07:19:09.6189382Z             },
2026-06-21T07:19:09.6189487Z             {
2026-06-21T07:19:09.6189653Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.6189764Z               "line": 283
2026-06-21T07:19:09.6189859Z             }
2026-06-21T07:19:09.6189963Z           ]
2026-06-21T07:19:09.6190060Z         }
2026-06-21T07:19:09.6190168Z       }
2026-06-21T07:19:09.6190273Z     },
2026-06-21T07:19:09.6190375Z     {
2026-06-21T07:19:09.6190516Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T07:19:09.6190737Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T07:19:09.6190869Z       "requiredStages": [],
2026-06-21T07:19:09.6190978Z       "stages": {
2026-06-21T07:19:09.6191087Z         "doc": {
2026-06-21T07:19:09.6191205Z           "complete": false,
2026-06-21T07:19:09.6191314Z           "evidence": []
2026-06-21T07:19:09.6191415Z         },
2026-06-21T07:19:09.6191524Z         "impl": {
2026-06-21T07:19:09.6191648Z           "complete": false,
2026-06-21T07:19:09.6191754Z           "evidence": []
2026-06-21T07:19:09.6191858Z         },
2026-06-21T07:19:09.6191963Z         "int": {
2026-06-21T07:19:09.6192073Z           "complete": false,
2026-06-21T07:19:09.6192187Z           "evidence": []
2026-06-21T07:19:09.6192288Z         },
2026-06-21T07:19:09.6192402Z         "unit": {
2026-06-21T07:19:09.6192506Z           "complete": false,
2026-06-21T07:19:09.6192627Z           "evidence": []
2026-06-21T07:19:09.6192735Z         }
2026-06-21T07:19:09.6192835Z       }
2026-06-21T07:19:09.6192932Z     },
2026-06-21T07:19:09.6193022Z     {
2026-06-21T07:19:09.6193169Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T07:19:09.6194218Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T07:19:09.6194441Z       "requiredStages": [
2026-06-21T07:19:09.6194556Z         "impl",
2026-06-21T07:19:09.6194661Z         "unit"
2026-06-21T07:19:09.6194760Z       ],
2026-06-21T07:19:09.6194871Z       "stages": {
2026-06-21T07:19:09.6194980Z         "doc": {
2026-06-21T07:19:09.6195099Z           "complete": false,
2026-06-21T07:19:09.6195210Z           "evidence": []
2026-06-21T07:19:09.6195318Z         },
2026-06-21T07:19:09.6195428Z         "impl": {
2026-06-21T07:19:09.6195544Z           "complete": true,
2026-06-21T07:19:09.6195642Z           "evidence": [
2026-06-21T07:19:09.6195743Z             {
2026-06-21T07:19:09.6195896Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6196019Z               "line": 26
2026-06-21T07:19:09.6196128Z             },
2026-06-21T07:19:09.6196233Z             {
2026-06-21T07:19:09.6196388Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6196498Z               "line": 95
2026-06-21T07:19:09.6196622Z             },
2026-06-21T07:19:09.6196726Z             {
2026-06-21T07:19:09.6196870Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6196988Z               "line": 166
2026-06-21T07:19:09.6197085Z             },
2026-06-21T07:19:09.6197194Z             {
2026-06-21T07:19:09.6197337Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6197443Z               "line": 19
2026-06-21T07:19:09.6197552Z             },
2026-06-21T07:19:09.6197656Z             {
2026-06-21T07:19:09.6197805Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6197914Z               "line": 50
2026-06-21T07:19:09.6198014Z             },
2026-06-21T07:19:09.6198106Z             {
2026-06-21T07:19:09.6198252Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T07:19:09.6198354Z               "line": 18
2026-06-21T07:19:09.6198458Z             },
2026-06-21T07:19:09.6198572Z             {
2026-06-21T07:19:09.6198707Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T07:19:09.6198829Z               "line": 71
2026-06-21T07:19:09.6198928Z             },
2026-06-21T07:19:09.6199127Z             {
2026-06-21T07:19:09.6199283Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.6199389Z               "line": 87
2026-06-21T07:19:09.6199493Z             }
2026-06-21T07:19:09.6199584Z           ]
2026-06-21T07:19:09.6199695Z         },
2026-06-21T07:19:09.6199799Z         "int": {
2026-06-21T07:19:09.6199922Z           "complete": false,
2026-06-21T07:19:09.6200033Z           "evidence": []
2026-06-21T07:19:09.6200133Z         },
2026-06-21T07:19:09.6200232Z         "unit": {
2026-06-21T07:19:09.6200339Z           "complete": true,
2026-06-21T07:19:09.6200447Z           "evidence": [
2026-06-21T07:19:09.6200552Z             {
2026-06-21T07:19:09.6200705Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6200819Z               "line": 289
2026-06-21T07:19:09.6200920Z             },
2026-06-21T07:19:09.6201025Z             {
2026-06-21T07:19:09.6201168Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6201279Z               "line": 314
2026-06-21T07:19:09.6201382Z             },
2026-06-21T07:19:09.6201495Z             {
2026-06-21T07:19:09.6201647Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6201755Z               "line": 350
2026-06-21T07:19:09.6201860Z             },
2026-06-21T07:19:09.6201966Z             {
2026-06-21T07:19:09.6202117Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6202228Z               "line": 418
2026-06-21T07:19:09.6202328Z             },
2026-06-21T07:19:09.6202538Z             {
2026-06-21T07:19:09.6202690Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6202804Z               "line": 429
2026-06-21T07:19:09.6202910Z             },
2026-06-21T07:19:09.6203019Z             {
2026-06-21T07:19:09.6203167Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6203362Z               "line": 460
2026-06-21T07:19:09.6203472Z             },
2026-06-21T07:19:09.6203577Z             {
2026-06-21T07:19:09.6203729Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.6203836Z               "line": 471
2026-06-21T07:19:09.6203939Z             },
2026-06-21T07:19:09.6204049Z             {
2026-06-21T07:19:09.6204193Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6204306Z               "line": 77
2026-06-21T07:19:09.6204400Z             },
2026-06-21T07:19:09.6204501Z             {
2026-06-21T07:19:09.6204644Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6204758Z               "line": 97
2026-06-21T07:19:09.6204855Z             },
2026-06-21T07:19:09.6204958Z             {
2026-06-21T07:19:09.6205098Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6205211Z               "line": 112
2026-06-21T07:19:09.6205320Z             },
2026-06-21T07:19:09.6205427Z             {
2026-06-21T07:19:09.6205569Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6205683Z               "line": 123
2026-06-21T07:19:09.6205789Z             },
2026-06-21T07:19:09.6205898Z             {
2026-06-21T07:19:09.6206032Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6206151Z               "line": 130
2026-06-21T07:19:09.6206256Z             },
2026-06-21T07:19:09.6206361Z             {
2026-06-21T07:19:09.6206508Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T07:19:09.6206617Z               "line": 145
2026-06-21T07:19:09.6206726Z             },
2026-06-21T07:19:09.6206835Z             {
2026-06-21T07:19:09.6206976Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T07:19:09.6207078Z               "line": 115
2026-06-21T07:19:09.6207191Z             },
2026-06-21T07:19:09.6207296Z             {
2026-06-21T07:19:09.6207430Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T07:19:09.6207544Z               "line": 130
2026-06-21T07:19:09.6207650Z             },
2026-06-21T07:19:09.6207754Z             {
2026-06-21T07:19:09.6207901Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.6208012Z               "line": 428
2026-06-21T07:19:09.6211528Z             }
2026-06-21T07:19:09.6211651Z           ]
2026-06-21T07:19:09.6211756Z         }
2026-06-21T07:19:09.6211858Z       }
2026-06-21T07:19:09.6211956Z     },
2026-06-21T07:19:09.6212059Z     {
2026-06-21T07:19:09.6212217Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T07:19:09.6218548Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T07:19:09.6218939Z       "requiredStages": [
2026-06-21T07:19:09.6219144Z         "impl",
2026-06-21T07:19:09.6219254Z         "unit",
2026-06-21T07:19:09.6219359Z         "int"
2026-06-21T07:19:09.6219454Z       ],
2026-06-21T07:19:09.6219555Z       "stages": {
2026-06-21T07:19:09.6219678Z         "doc": {
2026-06-21T07:19:09.6219784Z           "complete": false,
2026-06-21T07:19:09.6219898Z           "evidence": []
2026-06-21T07:19:09.6219991Z         },
2026-06-21T07:19:09.6220091Z         "impl": {
2026-06-21T07:19:09.6220206Z           "complete": true,
2026-06-21T07:19:09.6220313Z           "evidence": [
2026-06-21T07:19:09.6220408Z             {
2026-06-21T07:19:09.6220557Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6220666Z               "line": 943
2026-06-21T07:19:09.6220772Z             },
2026-06-21T07:19:09.6220876Z             {
2026-06-21T07:19:09.6221019Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6221139Z               "line": 322
2026-06-21T07:19:09.6221235Z             }
2026-06-21T07:19:09.6221343Z           ]
2026-06-21T07:19:09.6221444Z         },
2026-06-21T07:19:09.6221543Z         "int": {
2026-06-21T07:19:09.6221653Z           "complete": true,
2026-06-21T07:19:09.6221759Z           "evidence": [
2026-06-21T07:19:09.6221868Z             {
2026-06-21T07:19:09.6222050Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.6222154Z               "line": 1978
2026-06-21T07:19:09.6222259Z             }
2026-06-21T07:19:09.6222360Z           ]
2026-06-21T07:19:09.6222465Z         },
2026-06-21T07:19:09.6222568Z         "unit": {
2026-06-21T07:19:09.6222668Z           "complete": true,
2026-06-21T07:19:09.6222782Z           "evidence": [
2026-06-21T07:19:09.6222875Z             {
2026-06-21T07:19:09.6223018Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6223120Z               "line": 2529
2026-06-21T07:19:09.6223223Z             },
2026-06-21T07:19:09.6223328Z             {
2026-06-21T07:19:09.6223467Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6223581Z               "line": 2593
2026-06-21T07:19:09.6223682Z             },
2026-06-21T07:19:09.6223792Z             {
2026-06-21T07:19:09.6223924Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6224035Z               "line": 2648
2026-06-21T07:19:09.6224139Z             }
2026-06-21T07:19:09.6224239Z           ]
2026-06-21T07:19:09.6224340Z         }
2026-06-21T07:19:09.6224445Z       }
2026-06-21T07:19:09.6224549Z     },
2026-06-21T07:19:09.6224651Z     {
2026-06-21T07:19:09.6224792Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T07:19:09.6225665Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T07:19:09.6225907Z       "requiredStages": [
2026-06-21T07:19:09.6226017Z         "doc",
2026-06-21T07:19:09.6226126Z         "impl",
2026-06-21T07:19:09.6226233Z         "unit"
2026-06-21T07:19:09.6226332Z       ],
2026-06-21T07:19:09.6226436Z       "stages": {
2026-06-21T07:19:09.6226661Z         "doc": {
2026-06-21T07:19:09.6226779Z           "complete": true,
2026-06-21T07:19:09.6226886Z           "evidence": [
2026-06-21T07:19:09.6226985Z             {
2026-06-21T07:19:09.6227123Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6227233Z               "line": 374
2026-06-21T07:19:09.6227333Z             }
2026-06-21T07:19:09.6227438Z           ]
2026-06-21T07:19:09.6227539Z         },
2026-06-21T07:19:09.6227647Z         "impl": {
2026-06-21T07:19:09.6227756Z           "complete": true,
2026-06-21T07:19:09.6227865Z           "evidence": [
2026-06-21T07:19:09.6227959Z             {
2026-06-21T07:19:09.6228111Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6228227Z               "line": 200
2026-06-21T07:19:09.6228326Z             },
2026-06-21T07:19:09.6228430Z             {
2026-06-21T07:19:09.6228574Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6228673Z               "line": 304
2026-06-21T07:19:09.6228785Z             },
2026-06-21T07:19:09.6228889Z             {
2026-06-21T07:19:09.6229118Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6229222Z               "line": 562
2026-06-21T07:19:09.6229327Z             },
2026-06-21T07:19:09.6229424Z             {
2026-06-21T07:19:09.6229556Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6229665Z               "line": 577
2026-06-21T07:19:09.6229757Z             },
2026-06-21T07:19:09.6229866Z             {
2026-06-21T07:19:09.6229990Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6230101Z               "line": 1224
2026-06-21T07:19:09.6230204Z             },
2026-06-21T07:19:09.6230305Z             {
2026-06-21T07:19:09.6230463Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6230571Z               "line": 443
2026-06-21T07:19:09.6230671Z             },
2026-06-21T07:19:09.6230775Z             {
2026-06-21T07:19:09.6230921Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6231031Z               "line": 590
2026-06-21T07:19:09.6231137Z             },
2026-06-21T07:19:09.6231240Z             {
2026-06-21T07:19:09.6231385Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6231494Z               "line": 731
2026-06-21T07:19:09.6231598Z             }
2026-06-21T07:19:09.6231704Z           ]
2026-06-21T07:19:09.6231790Z         },
2026-06-21T07:19:09.6231898Z         "int": {
2026-06-21T07:19:09.6232009Z           "complete": false,
2026-06-21T07:19:09.6232113Z           "evidence": []
2026-06-21T07:19:09.6232223Z         },
2026-06-21T07:19:09.6232329Z         "unit": {
2026-06-21T07:19:09.6232437Z           "complete": true,
2026-06-21T07:19:09.6232557Z           "evidence": [
2026-06-21T07:19:09.6232705Z             {
2026-06-21T07:19:09.6232935Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6233057Z               "line": 1155
2026-06-21T07:19:09.6233152Z             },
2026-06-21T07:19:09.6233261Z             {
2026-06-21T07:19:09.6233416Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T07:19:09.6233525Z               "line": 30
2026-06-21T07:19:09.6233622Z             }
2026-06-21T07:19:09.6233731Z           ]
2026-06-21T07:19:09.6233831Z         }
2026-06-21T07:19:09.6233937Z       }
2026-06-21T07:19:09.6234037Z     },
2026-06-21T07:19:09.6234141Z     {
2026-06-21T07:19:09.6234280Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T07:19:09.6237742Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T07:19:09.6238081Z       "requiredStages": [
2026-06-21T07:19:09.6238188Z         "impl",
2026-06-21T07:19:09.6238297Z         "unit",
2026-06-21T07:19:09.6238402Z         "int"
2026-06-21T07:19:09.6238510Z       ],
2026-06-21T07:19:09.6238614Z       "stages": {
2026-06-21T07:19:09.6238720Z         "doc": {
2026-06-21T07:19:09.6238830Z           "complete": false,
2026-06-21T07:19:09.6238933Z           "evidence": []
2026-06-21T07:19:09.6239130Z         },
2026-06-21T07:19:09.6239239Z         "impl": {
2026-06-21T07:19:09.6239354Z           "complete": true,
2026-06-21T07:19:09.6239459Z           "evidence": [
2026-06-21T07:19:09.6239563Z             {
2026-06-21T07:19:09.6239692Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6239807Z               "line": 718
2026-06-21T07:19:09.6239901Z             },
2026-06-21T07:19:09.6240003Z             {
2026-06-21T07:19:09.6240131Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6240230Z               "line": 887
2026-06-21T07:19:09.6240332Z             }
2026-06-21T07:19:09.6240436Z           ]
2026-06-21T07:19:09.6240540Z         },
2026-06-21T07:19:09.6240651Z         "int": {
2026-06-21T07:19:09.6240760Z           "complete": true,
2026-06-21T07:19:09.6240870Z           "evidence": [
2026-06-21T07:19:09.6240971Z             {
2026-06-21T07:19:09.6241121Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.6241231Z               "line": 420
2026-06-21T07:19:09.6241335Z             }
2026-06-21T07:19:09.6241429Z           ]
2026-06-21T07:19:09.6241519Z         },
2026-06-21T07:19:09.6241625Z         "unit": {
2026-06-21T07:19:09.6241730Z           "complete": true,
2026-06-21T07:19:09.6241844Z           "evidence": [
2026-06-21T07:19:09.6241945Z             {
2026-06-21T07:19:09.6242073Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6242177Z               "line": 1072
2026-06-21T07:19:09.6242283Z             },
2026-06-21T07:19:09.6242388Z             {
2026-06-21T07:19:09.6242502Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6242617Z               "line": 1096
2026-06-21T07:19:09.6242717Z             }
2026-06-21T07:19:09.6242817Z           ]
2026-06-21T07:19:09.6242922Z         }
2026-06-21T07:19:09.6243021Z       }
2026-06-21T07:19:09.6243127Z     },
2026-06-21T07:19:09.6243223Z     {
2026-06-21T07:19:09.6243370Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T07:19:09.6247279Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T07:19:09.6247599Z       "requiredStages": [
2026-06-21T07:19:09.6247710Z         "impl",
2026-06-21T07:19:09.6247819Z         "unit",
2026-06-21T07:19:09.6247923Z         "int"
2026-06-21T07:19:09.6248025Z       ],
2026-06-21T07:19:09.6248134Z       "stages": {
2026-06-21T07:19:09.6248224Z         "doc": {
2026-06-21T07:19:09.6248345Z           "complete": false,
2026-06-21T07:19:09.6248448Z           "evidence": []
2026-06-21T07:19:09.6248553Z         },
2026-06-21T07:19:09.6248664Z         "impl": {
2026-06-21T07:19:09.6248772Z           "complete": true,
2026-06-21T07:19:09.6248895Z           "evidence": [
2026-06-21T07:19:09.6249056Z             {
2026-06-21T07:19:09.6249198Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6249303Z               "line": 1417
2026-06-21T07:19:09.6249408Z             },
2026-06-21T07:19:09.6249512Z             {
2026-06-21T07:19:09.6249638Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6249742Z               "line": 1441
2026-06-21T07:19:09.6249841Z             }
2026-06-21T07:19:09.6249957Z           ]
2026-06-21T07:19:09.6250061Z         },
2026-06-21T07:19:09.6250166Z         "int": {
2026-06-21T07:19:09.6250281Z           "complete": true,
2026-06-21T07:19:09.6250390Z           "evidence": [
2026-06-21T07:19:09.6250495Z             {
2026-06-21T07:19:09.6250648Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T07:19:09.6250762Z               "line": 329
2026-06-21T07:19:09.6250864Z             }
2026-06-21T07:19:09.6250962Z           ]
2026-06-21T07:19:09.6251072Z         },
2026-06-21T07:19:09.6251183Z         "unit": {
2026-06-21T07:19:09.6251296Z           "complete": true,
2026-06-21T07:19:09.6251406Z           "evidence": [
2026-06-21T07:19:09.6251508Z             {
2026-06-21T07:19:09.6251639Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6251748Z               "line": 8169
2026-06-21T07:19:09.6251849Z             }
2026-06-21T07:19:09.6251951Z           ]
2026-06-21T07:19:09.6252050Z         }
2026-06-21T07:19:09.6252152Z       }
2026-06-21T07:19:09.6252257Z     },
2026-06-21T07:19:09.6252356Z     {
2026-06-21T07:19:09.6252486Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T07:19:09.6256473Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T07:19:09.6256735Z       "requiredStages": [
2026-06-21T07:19:09.6256932Z         "impl",
2026-06-21T07:19:09.6257041Z         "unit"
2026-06-21T07:19:09.6257149Z       ],
2026-06-21T07:19:09.6257249Z       "stages": {
2026-06-21T07:19:09.6257360Z         "doc": {
2026-06-21T07:19:09.6257468Z           "complete": false,
2026-06-21T07:19:09.6257583Z           "evidence": []
2026-06-21T07:19:09.6257683Z         },
2026-06-21T07:19:09.6257787Z         "impl": {
2026-06-21T07:19:09.6257898Z           "complete": true,
2026-06-21T07:19:09.6258007Z           "evidence": [
2026-06-21T07:19:09.6258116Z             {
2026-06-21T07:19:09.6258242Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6258350Z               "line": 910
2026-06-21T07:19:09.6258460Z             }
2026-06-21T07:19:09.6258557Z           ]
2026-06-21T07:19:09.6258660Z         },
2026-06-21T07:19:09.6258755Z         "int": {
2026-06-21T07:19:09.6258876Z           "complete": false,
2026-06-21T07:19:09.6259065Z           "evidence": []
2026-06-21T07:19:09.6259176Z         },
2026-06-21T07:19:09.6259280Z         "unit": {
2026-06-21T07:19:09.6259398Z           "complete": true,
2026-06-21T07:19:09.6259508Z           "evidence": [
2026-06-21T07:19:09.6259611Z             {
2026-06-21T07:19:09.6259739Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6259849Z               "line": 1112
2026-06-21T07:19:09.6259954Z             }
2026-06-21T07:19:09.6260058Z           ]
2026-06-21T07:19:09.6260159Z         }
2026-06-21T07:19:09.6260250Z       }
2026-06-21T07:19:09.6260354Z     },
2026-06-21T07:19:09.6260455Z     {
2026-06-21T07:19:09.6260593Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T07:19:09.6265254Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T07:19:09.6265412Z       "requiredStages": [
2026-06-21T07:19:09.6265516Z         "impl",
2026-06-21T07:19:09.6265617Z         "unit"
2026-06-21T07:19:09.6265718Z       ],
2026-06-21T07:19:09.6265821Z       "stages": {
2026-06-21T07:19:09.6265927Z         "doc": {
2026-06-21T07:19:09.6266046Z           "complete": false,
2026-06-21T07:19:09.6266155Z           "evidence": []
2026-06-21T07:19:09.6266261Z         },
2026-06-21T07:19:09.6266375Z         "impl": {
2026-06-21T07:19:09.6266489Z           "complete": true,
2026-06-21T07:19:09.6266704Z           "evidence": [
2026-06-21T07:19:09.6266804Z             {
2026-06-21T07:19:09.6266938Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6267043Z               "line": 264
2026-06-21T07:19:09.6267148Z             }
2026-06-21T07:19:09.6267367Z           ]
2026-06-21T07:19:09.6267468Z         },
2026-06-21T07:19:09.6267577Z         "int": {
2026-06-21T07:19:09.6267690Z           "complete": false,
2026-06-21T07:19:09.6267799Z           "evidence": []
2026-06-21T07:19:09.6267900Z         },
2026-06-21T07:19:09.6268009Z         "unit": {
2026-06-21T07:19:09.6268124Z           "complete": true,
2026-06-21T07:19:09.6268238Z           "evidence": [
2026-06-21T07:19:09.6268342Z             {
2026-06-21T07:19:09.6268468Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6268577Z               "line": 1094
2026-06-21T07:19:09.6268671Z             },
2026-06-21T07:19:09.6268773Z             {
2026-06-21T07:19:09.6268887Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6269083Z               "line": 1225
2026-06-21T07:19:09.6269197Z             },
2026-06-21T07:19:09.6269297Z             {
2026-06-21T07:19:09.6269426Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6269535Z               "line": 1227
2026-06-21T07:19:09.6269635Z             }
2026-06-21T07:19:09.6269741Z           ]
2026-06-21T07:19:09.6269845Z         }
2026-06-21T07:19:09.6269944Z       }
2026-06-21T07:19:09.6270045Z     },
2026-06-21T07:19:09.6270149Z     {
2026-06-21T07:19:09.6270285Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T07:19:09.6270576Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T07:19:09.6270695Z       "requiredStages": [
2026-06-21T07:19:09.6270800Z         "impl",
2026-06-21T07:19:09.6270909Z         "unit"
2026-06-21T07:19:09.6271010Z       ],
2026-06-21T07:19:09.6271110Z       "stages": {
2026-06-21T07:19:09.6271210Z         "doc": {
2026-06-21T07:19:09.6271340Z           "complete": true,
2026-06-21T07:19:09.6271449Z           "evidence": [
2026-06-21T07:19:09.6271553Z             {
2026-06-21T07:19:09.6271688Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6271792Z               "line": 139
2026-06-21T07:19:09.6271902Z             }
2026-06-21T07:19:09.6272003Z           ]
2026-06-21T07:19:09.6272116Z         },
2026-06-21T07:19:09.6272221Z         "impl": {
2026-06-21T07:19:09.6272332Z           "complete": true,
2026-06-21T07:19:09.6272449Z           "evidence": [
2026-06-21T07:19:09.6272555Z             {
2026-06-21T07:19:09.6272699Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T07:19:09.6272797Z               "line": 29
2026-06-21T07:19:09.6272907Z             },
2026-06-21T07:19:09.6273011Z             {
2026-06-21T07:19:09.6273157Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.6273267Z               "line": 101
2026-06-21T07:19:09.6273368Z             },
2026-06-21T07:19:09.6273476Z             {
2026-06-21T07:19:09.6273620Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6273734Z               "line": 30
2026-06-21T07:19:09.6273843Z             },
2026-06-21T07:19:09.6273949Z             {
2026-06-21T07:19:09.6274082Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.6274197Z               "line": 48
2026-06-21T07:19:09.6274306Z             }
2026-06-21T07:19:09.6274397Z           ]
2026-06-21T07:19:09.6274497Z         },
2026-06-21T07:19:09.6274607Z         "int": {
2026-06-21T07:19:09.6274726Z           "complete": false,
2026-06-21T07:19:09.6274831Z           "evidence": []
2026-06-21T07:19:09.6274936Z         },
2026-06-21T07:19:09.6275040Z         "unit": {
2026-06-21T07:19:09.6275151Z           "complete": true,
2026-06-21T07:19:09.6275265Z           "evidence": [
2026-06-21T07:19:09.6275378Z             {
2026-06-21T07:19:09.6275526Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6275752Z               "line": 162
2026-06-21T07:19:09.6275853Z             }
2026-06-21T07:19:09.6275967Z           ]
2026-06-21T07:19:09.6276071Z         }
2026-06-21T07:19:09.6276173Z       }
2026-06-21T07:19:09.6276278Z     },
2026-06-21T07:19:09.6276376Z     {
2026-06-21T07:19:09.6276520Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T07:19:09.6277035Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T07:19:09.6277155Z       "requiredStages": [
2026-06-21T07:19:09.6277264Z         "doc",
2026-06-21T07:19:09.6277364Z         "impl",
2026-06-21T07:19:09.6277470Z         "unit"
2026-06-21T07:19:09.6277573Z       ],
2026-06-21T07:19:09.6277679Z       "stages": {
2026-06-21T07:19:09.6277785Z         "doc": {
2026-06-21T07:19:09.6277902Z           "complete": true,
2026-06-21T07:19:09.6278009Z           "evidence": [
2026-06-21T07:19:09.6278123Z             {
2026-06-21T07:19:09.6278259Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6278379Z               "line": 151
2026-06-21T07:19:09.6278480Z             }
2026-06-21T07:19:09.6278579Z           ]
2026-06-21T07:19:09.6278684Z         },
2026-06-21T07:19:09.6278789Z         "impl": {
2026-06-21T07:19:09.6278907Z           "complete": true,
2026-06-21T07:19:09.6279109Z           "evidence": [
2026-06-21T07:19:09.6279208Z             {
2026-06-21T07:19:09.6279352Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6279456Z               "line": 22
2026-06-21T07:19:09.6279565Z             }
2026-06-21T07:19:09.6279672Z           ]
2026-06-21T07:19:09.6279771Z         },
2026-06-21T07:19:09.6279875Z         "int": {
2026-06-21T07:19:09.6279991Z           "complete": false,
2026-06-21T07:19:09.6280109Z           "evidence": []
2026-06-21T07:19:09.6280204Z         },
2026-06-21T07:19:09.6280306Z         "unit": {
2026-06-21T07:19:09.6280410Z           "complete": true,
2026-06-21T07:19:09.6280519Z           "evidence": [
2026-06-21T07:19:09.6280624Z             {
2026-06-21T07:19:09.6280774Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6280888Z               "line": 298
2026-06-21T07:19:09.6280989Z             }
2026-06-21T07:19:09.6281089Z           ]
2026-06-21T07:19:09.6281188Z         }
2026-06-21T07:19:09.6281294Z       }
2026-06-21T07:19:09.6281394Z     },
2026-06-21T07:19:09.6281498Z     {
2026-06-21T07:19:09.6281647Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T07:19:09.6282123Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T07:19:09.6282248Z       "requiredStages": [
2026-06-21T07:19:09.6282362Z         "impl",
2026-06-21T07:19:09.6282466Z         "unit"
2026-06-21T07:19:09.6282568Z       ],
2026-06-21T07:19:09.6282666Z       "stages": {
2026-06-21T07:19:09.6282776Z         "doc": {
2026-06-21T07:19:09.6282892Z           "complete": true,
2026-06-21T07:19:09.6283005Z           "evidence": [
2026-06-21T07:19:09.6283111Z             {
2026-06-21T07:19:09.6283236Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6283343Z               "line": 145
2026-06-21T07:19:09.6283447Z             }
2026-06-21T07:19:09.6283558Z           ]
2026-06-21T07:19:09.6283665Z         },
2026-06-21T07:19:09.6283779Z         "impl": {
2026-06-21T07:19:09.6283894Z           "complete": true,
2026-06-21T07:19:09.6283998Z           "evidence": [
2026-06-21T07:19:09.6284103Z             {
2026-06-21T07:19:09.6284252Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T07:19:09.6284361Z               "line": 160
2026-06-21T07:19:09.6284462Z             },
2026-06-21T07:19:09.6284571Z             {
2026-06-21T07:19:09.6284728Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6284829Z               "line": 200
2026-06-21T07:19:09.6284943Z             },
2026-06-21T07:19:09.6285047Z             {
2026-06-21T07:19:09.6285314Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6285416Z               "line": 298
2026-06-21T07:19:09.6285520Z             },
2026-06-21T07:19:09.6285625Z             {
2026-06-21T07:19:09.6285764Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T07:19:09.6285966Z               "line": 20
2026-06-21T07:19:09.6286067Z             }
2026-06-21T07:19:09.6286175Z           ]
2026-06-21T07:19:09.6286279Z         },
2026-06-21T07:19:09.6286389Z         "int": {
2026-06-21T07:19:09.6286499Z           "complete": false,
2026-06-21T07:19:09.6286608Z           "evidence": []
2026-06-21T07:19:09.6286714Z         },
2026-06-21T07:19:09.6286819Z         "unit": {
2026-06-21T07:19:09.6286937Z           "complete": true,
2026-06-21T07:19:09.6287043Z           "evidence": [
2026-06-21T07:19:09.6287147Z             {
2026-06-21T07:19:09.6287300Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6287405Z               "line": 937
2026-06-21T07:19:09.6287519Z             },
2026-06-21T07:19:09.6287624Z             {
2026-06-21T07:19:09.6287776Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T07:19:09.6287881Z               "line": 88
2026-06-21T07:19:09.6287988Z             },
2026-06-21T07:19:09.6288096Z             {
2026-06-21T07:19:09.6288249Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6288354Z               "line": 851
2026-06-21T07:19:09.6288458Z             },
2026-06-21T07:19:09.6288559Z             {
2026-06-21T07:19:09.6288702Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6288806Z               "line": 870
2026-06-21T07:19:09.6288915Z             },
2026-06-21T07:19:09.6289078Z             {
2026-06-21T07:19:09.6289239Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6289345Z               "line": 279
2026-06-21T07:19:09.6289454Z             },
2026-06-21T07:19:09.6289554Z             {
2026-06-21T07:19:09.6289693Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T07:19:09.6289811Z               "line": 82
2026-06-21T07:19:09.6289908Z             },
2026-06-21T07:19:09.6290026Z             {
2026-06-21T07:19:09.6290164Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T07:19:09.6290279Z               "line": 99
2026-06-21T07:19:09.6290379Z             },
2026-06-21T07:19:09.6290489Z             {
2026-06-21T07:19:09.6290632Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T07:19:09.6290727Z               "line": 119
2026-06-21T07:19:09.6290827Z             }
2026-06-21T07:19:09.6290933Z           ]
2026-06-21T07:19:09.6291040Z         }
2026-06-21T07:19:09.6291135Z       }
2026-06-21T07:19:09.6291236Z     },
2026-06-21T07:19:09.6291339Z     {
2026-06-21T07:19:09.6291477Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T07:19:09.6292856Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T07:19:09.6292988Z       "requiredStages": [
2026-06-21T07:19:09.6293095Z         "doc",
2026-06-21T07:19:09.6293208Z         "impl",
2026-06-21T07:19:09.6293308Z         "unit"
2026-06-21T07:19:09.6293414Z       ],
2026-06-21T07:19:09.6293518Z       "stages": {
2026-06-21T07:19:09.6293632Z         "doc": {
2026-06-21T07:19:09.6293743Z           "complete": true,
2026-06-21T07:19:09.6293852Z           "evidence": [
2026-06-21T07:19:09.6293960Z             {
2026-06-21T07:19:09.6294094Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6294211Z               "line": 157
2026-06-21T07:19:09.6294310Z             }
2026-06-21T07:19:09.6294421Z           ]
2026-06-21T07:19:09.6294630Z         },
2026-06-21T07:19:09.6294731Z         "impl": {
2026-06-21T07:19:09.6294836Z           "complete": true,
2026-06-21T07:19:09.6294945Z           "evidence": [
2026-06-21T07:19:09.6295046Z             {
2026-06-21T07:19:09.6295207Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.6295408Z               "line": 137
2026-06-21T07:19:09.6295512Z             },
2026-06-21T07:19:09.6295607Z             {
2026-06-21T07:19:09.6295765Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6295874Z               "line": 564
2026-06-21T07:19:09.6295971Z             },
2026-06-21T07:19:09.6296061Z             {
2026-06-21T07:19:09.6296228Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6296353Z               "line": 571
2026-06-21T07:19:09.6296451Z             },
2026-06-21T07:19:09.6296560Z             {
2026-06-21T07:19:09.6296712Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6296830Z               "line": 227
2026-06-21T07:19:09.6296934Z             }
2026-06-21T07:19:09.6297045Z           ]
2026-06-21T07:19:09.6297154Z         },
2026-06-21T07:19:09.6297259Z         "int": {
2026-06-21T07:19:09.6297379Z           "complete": false,
2026-06-21T07:19:09.6297497Z           "evidence": []
2026-06-21T07:19:09.6297599Z         },
2026-06-21T07:19:09.6297703Z         "unit": {
2026-06-21T07:19:09.6297821Z           "complete": true,
2026-06-21T07:19:09.6297932Z           "evidence": [
2026-06-21T07:19:09.6298036Z             {
2026-06-21T07:19:09.6298199Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6298308Z               "line": 1622
2026-06-21T07:19:09.6298417Z             },
2026-06-21T07:19:09.6298523Z             {
2026-06-21T07:19:09.6298684Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6298799Z               "line": 1680
2026-06-21T07:19:09.6298896Z             },
2026-06-21T07:19:09.6299081Z             {
2026-06-21T07:19:09.6299220Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6299327Z               "line": 883
2026-06-21T07:19:09.6299432Z             }
2026-06-21T07:19:09.6299542Z           ]
2026-06-21T07:19:09.6299647Z         }
2026-06-21T07:19:09.6299756Z       }
2026-06-21T07:19:09.6299857Z     },
2026-06-21T07:19:09.6299962Z     {
2026-06-21T07:19:09.6300105Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T07:19:09.6300328Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T07:19:09.6300453Z       "requiredStages": [
2026-06-21T07:19:09.6300572Z         "impl",
2026-06-21T07:19:09.6300672Z         "unit"
2026-06-21T07:19:09.6300773Z       ],
2026-06-21T07:19:09.6300877Z       "stages": {
2026-06-21T07:19:09.6300987Z         "doc": {
2026-06-21T07:19:09.6301103Z           "complete": false,
2026-06-21T07:19:09.6301211Z           "evidence": []
2026-06-21T07:19:09.6301311Z         },
2026-06-21T07:19:09.6301422Z         "impl": {
2026-06-21T07:19:09.6301544Z           "complete": true,
2026-06-21T07:19:09.6301648Z           "evidence": [
2026-06-21T07:19:09.6301749Z             {
2026-06-21T07:19:09.6301890Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6302008Z               "line": 15
2026-06-21T07:19:09.6302114Z             },
2026-06-21T07:19:09.6302219Z             {
2026-06-21T07:19:09.6302371Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6302481Z               "line": 55
2026-06-21T07:19:09.6302594Z             },
2026-06-21T07:19:09.6302696Z             {
2026-06-21T07:19:09.6302843Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6302952Z               "line": 66
2026-06-21T07:19:09.6303053Z             },
2026-06-21T07:19:09.6303153Z             {
2026-06-21T07:19:09.6303277Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6303387Z               "line": 115
2026-06-21T07:19:09.6303616Z             },
2026-06-21T07:19:09.6303712Z             {
2026-06-21T07:19:09.6303859Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6303970Z               "line": 138
2026-06-21T07:19:09.6304069Z             }
2026-06-21T07:19:09.6304174Z           ]
2026-06-21T07:19:09.6304365Z         },
2026-06-21T07:19:09.6304477Z         "int": {
2026-06-21T07:19:09.6304592Z           "complete": false,
2026-06-21T07:19:09.6304710Z           "evidence": []
2026-06-21T07:19:09.6304818Z         },
2026-06-21T07:19:09.6304924Z         "unit": {
2026-06-21T07:19:09.6305033Z           "complete": true,
2026-06-21T07:19:09.6305137Z           "evidence": [
2026-06-21T07:19:09.6305243Z             {
2026-06-21T07:19:09.6305387Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6305500Z               "line": 363
2026-06-21T07:19:09.6305601Z             },
2026-06-21T07:19:09.6305706Z             {
2026-06-21T07:19:09.6305834Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6305949Z               "line": 369
2026-06-21T07:19:09.6306054Z             },
2026-06-21T07:19:09.6306159Z             {
2026-06-21T07:19:09.6306297Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6306406Z               "line": 383
2026-06-21T07:19:09.6306517Z             },
2026-06-21T07:19:09.6306622Z             {
2026-06-21T07:19:09.6306764Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6306875Z               "line": 392
2026-06-21T07:19:09.6306978Z             },
2026-06-21T07:19:09.6307083Z             {
2026-06-21T07:19:09.6307230Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6307342Z               "line": 195
2026-06-21T07:19:09.6307442Z             },
2026-06-21T07:19:09.6307553Z             {
2026-06-21T07:19:09.6307704Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6307800Z               "line": 208
2026-06-21T07:19:09.6307910Z             },
2026-06-21T07:19:09.6308019Z             {
2026-06-21T07:19:09.6308163Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6308273Z               "line": 271
2026-06-21T07:19:09.6308367Z             },
2026-06-21T07:19:09.6308478Z             {
2026-06-21T07:19:09.6308620Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6308744Z               "line": 290
2026-06-21T07:19:09.6308850Z             },
2026-06-21T07:19:09.6309054Z             {
2026-06-21T07:19:09.6309197Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6309311Z               "line": 319
2026-06-21T07:19:09.6309408Z             }
2026-06-21T07:19:09.6309507Z           ]
2026-06-21T07:19:09.6309607Z         }
2026-06-21T07:19:09.6309709Z       }
2026-06-21T07:19:09.6309808Z     },
2026-06-21T07:19:09.6309902Z     {
2026-06-21T07:19:09.6310045Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T07:19:09.6310350Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T07:19:09.6310460Z       "requiredStages": [
2026-06-21T07:19:09.6310569Z         "impl",
2026-06-21T07:19:09.6310674Z         "unit",
2026-06-21T07:19:09.6310784Z         "int"
2026-06-21T07:19:09.6310884Z       ],
2026-06-21T07:19:09.6310999Z       "stages": {
2026-06-21T07:19:09.6311108Z         "doc": {
2026-06-21T07:19:09.6311222Z           "complete": false,
2026-06-21T07:19:09.6311338Z           "evidence": []
2026-06-21T07:19:09.6311437Z         },
2026-06-21T07:19:09.6311537Z         "impl": {
2026-06-21T07:19:09.6311643Z           "complete": true,
2026-06-21T07:19:09.6314864Z           "evidence": [
2026-06-21T07:19:09.6314991Z             {
2026-06-21T07:19:09.6315133Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6315247Z               "line": 474
2026-06-21T07:19:09.6315360Z             },
2026-06-21T07:19:09.6315479Z             {
2026-06-21T07:19:09.6315627Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6315966Z               "line": 916
2026-06-21T07:19:09.6316074Z             },
2026-06-21T07:19:09.6316180Z             {
2026-06-21T07:19:09.6316332Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6316437Z               "line": 961
2026-06-21T07:19:09.6316647Z             },
2026-06-21T07:19:09.6316752Z             {
2026-06-21T07:19:09.6316900Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.6317014Z               "line": 986
2026-06-21T07:19:09.6317120Z             },
2026-06-21T07:19:09.6317219Z             {
2026-06-21T07:19:09.6317358Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6317473Z               "line": 1760
2026-06-21T07:19:09.6317576Z             },
2026-06-21T07:19:09.6317671Z             {
2026-06-21T07:19:09.6317814Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6317916Z               "line": 2005
2026-06-21T07:19:09.6318041Z             },
2026-06-21T07:19:09.6318156Z             {
2026-06-21T07:19:09.6318379Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6318560Z               "line": 2136
2026-06-21T07:19:09.6318680Z             },
2026-06-21T07:19:09.6318785Z             {
2026-06-21T07:19:09.6319033Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6319147Z               "line": 2184
2026-06-21T07:19:09.6319247Z             },
2026-06-21T07:19:09.6319353Z             {
2026-06-21T07:19:09.6319505Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.6319605Z               "line": 46
2026-06-21T07:19:09.6319711Z             },
2026-06-21T07:19:09.6319814Z             {
2026-06-21T07:19:09.6319968Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.6320077Z               "line": 200
2026-06-21T07:19:09.6320181Z             },
2026-06-21T07:19:09.6320292Z             {
2026-06-21T07:19:09.6320434Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.6320556Z               "line": 132
2026-06-21T07:19:09.6320663Z             },
2026-06-21T07:19:09.6320762Z             {
2026-06-21T07:19:09.6320900Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.6321016Z               "line": 137
2026-06-21T07:19:09.6321115Z             },
2026-06-21T07:19:09.6321220Z             {
2026-06-21T07:19:09.6321368Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.6321477Z               "line": 183
2026-06-21T07:19:09.6321578Z             }
2026-06-21T07:19:09.6321683Z           ]
2026-06-21T07:19:09.6321821Z         },
2026-06-21T07:19:09.6321927Z         "int": {
2026-06-21T07:19:09.6322064Z           "complete": true,
2026-06-21T07:19:09.6322179Z           "evidence": [
2026-06-21T07:19:09.6322289Z             {
2026-06-21T07:19:09.6322465Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T07:19:09.6322580Z               "line": 27
2026-06-21T07:19:09.6322693Z             },
2026-06-21T07:19:09.6322792Z             {
2026-06-21T07:19:09.6322958Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T07:19:09.6323062Z               "line": 148
2026-06-21T07:19:09.6323167Z             },
2026-06-21T07:19:09.6323273Z             {
2026-06-21T07:19:09.6323428Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T07:19:09.6323549Z               "line": 200
2026-06-21T07:19:09.6323653Z             }
2026-06-21T07:19:09.6323762Z           ]
2026-06-21T07:19:09.6323868Z         },
2026-06-21T07:19:09.6323977Z         "unit": {
2026-06-21T07:19:09.6324097Z           "complete": true,
2026-06-21T07:19:09.6324197Z           "evidence": [
2026-06-21T07:19:09.6324302Z             {
2026-06-21T07:19:09.6324470Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.6324598Z               "line": 366
2026-06-21T07:19:09.6324697Z             },
2026-06-21T07:19:09.6324804Z             {
2026-06-21T07:19:09.6325090Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.6325203Z               "line": 398
2026-06-21T07:19:09.6325308Z             },
2026-06-21T07:19:09.6325404Z             {
2026-06-21T07:19:09.6325551Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T07:19:09.6325746Z               "line": 419
2026-06-21T07:19:09.6325854Z             },
2026-06-21T07:19:09.6325962Z             {
2026-06-21T07:19:09.6326101Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6326215Z               "line": 628
2026-06-21T07:19:09.6326315Z             },
2026-06-21T07:19:09.6326411Z             {
2026-06-21T07:19:09.6326558Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T07:19:09.6326668Z               "line": 289
2026-06-21T07:19:09.6326778Z             },
2026-06-21T07:19:09.6326873Z             {
2026-06-21T07:19:09.6327017Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T07:19:09.6327126Z               "line": 230
2026-06-21T07:19:09.6327240Z             },
2026-06-21T07:19:09.6327332Z             {
2026-06-21T07:19:09.6327474Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.6327588Z               "line": 526
2026-06-21T07:19:09.6327685Z             },
2026-06-21T07:19:09.6327789Z             {
2026-06-21T07:19:09.6327932Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.6328033Z               "line": 556
2026-06-21T07:19:09.6328132Z             }
2026-06-21T07:19:09.6328236Z           ]
2026-06-21T07:19:09.6328336Z         }
2026-06-21T07:19:09.6328439Z       }
2026-06-21T07:19:09.6328543Z     },
2026-06-21T07:19:09.6328644Z     {
2026-06-21T07:19:09.6328801Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T07:19:09.6330693Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T07:19:09.6330839Z       "requiredStages": [
2026-06-21T07:19:09.6330952Z         "doc",
2026-06-21T07:19:09.6331055Z         "impl",
2026-06-21T07:19:09.6331160Z         "unit"
2026-06-21T07:19:09.6331271Z       ],
2026-06-21T07:19:09.6331379Z       "stages": {
2026-06-21T07:19:09.6331480Z         "doc": {
2026-06-21T07:19:09.6331585Z           "complete": true,
2026-06-21T07:19:09.6331694Z           "evidence": [
2026-06-21T07:19:09.6331795Z             {
2026-06-21T07:19:09.6331928Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6332037Z               "line": 314
2026-06-21T07:19:09.6332129Z             }
2026-06-21T07:19:09.6332233Z           ]
2026-06-21T07:19:09.6332342Z         },
2026-06-21T07:19:09.6332453Z         "impl": {
2026-06-21T07:19:09.6332571Z           "complete": true,
2026-06-21T07:19:09.6332676Z           "evidence": [
2026-06-21T07:19:09.6332778Z             {
2026-06-21T07:19:09.6332948Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T07:19:09.6333068Z               "line": 33
2026-06-21T07:19:09.6333169Z             },
2026-06-21T07:19:09.6333272Z             {
2026-06-21T07:19:09.6333434Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T07:19:09.6333546Z               "line": 39
2026-06-21T07:19:09.6333655Z             }
2026-06-21T07:19:09.6333761Z           ]
2026-06-21T07:19:09.6333871Z         },
2026-06-21T07:19:09.6333975Z         "int": {
2026-06-21T07:19:09.6334085Z           "complete": false,
2026-06-21T07:19:09.6334195Z           "evidence": []
2026-06-21T07:19:09.6334304Z         },
2026-06-21T07:19:09.6334415Z         "unit": {
2026-06-21T07:19:09.6334632Z           "complete": true,
2026-06-21T07:19:09.6334744Z           "evidence": [
2026-06-21T07:19:09.6334848Z             {
2026-06-21T07:19:09.6335005Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T07:19:09.6335114Z               "line": 95
2026-06-21T07:19:09.6335224Z             }
2026-06-21T07:19:09.6335420Z           ]
2026-06-21T07:19:09.6335525Z         }
2026-06-21T07:19:09.6335631Z       }
2026-06-21T07:19:09.6335735Z     },
2026-06-21T07:19:09.6335830Z     {
2026-06-21T07:19:09.6335964Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T07:19:09.6338512Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T07:19:09.6338645Z       "requiredStages": [
2026-06-21T07:19:09.6338758Z         "impl",
2026-06-21T07:19:09.6338863Z         "unit"
2026-06-21T07:19:09.6339037Z       ],
2026-06-21T07:19:09.6339137Z       "stages": {
2026-06-21T07:19:09.6339243Z         "doc": {
2026-06-21T07:19:09.6339357Z           "complete": false,
2026-06-21T07:19:09.6339475Z           "evidence": []
2026-06-21T07:19:09.6339567Z         },
2026-06-21T07:19:09.6339676Z         "impl": {
2026-06-21T07:19:09.6339790Z           "complete": true,
2026-06-21T07:19:09.6339896Z           "evidence": [
2026-06-21T07:19:09.6340005Z             {
2026-06-21T07:19:09.6340163Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6340272Z               "line": 488
2026-06-21T07:19:09.6340376Z             }
2026-06-21T07:19:09.6340478Z           ]
2026-06-21T07:19:09.6340582Z         },
2026-06-21T07:19:09.6340686Z         "int": {
2026-06-21T07:19:09.6340802Z           "complete": false,
2026-06-21T07:19:09.6340911Z           "evidence": []
2026-06-21T07:19:09.6341016Z         },
2026-06-21T07:19:09.6341112Z         "unit": {
2026-06-21T07:19:09.6341225Z           "complete": true,
2026-06-21T07:19:09.6341335Z           "evidence": [
2026-06-21T07:19:09.6341441Z             {
2026-06-21T07:19:09.6341596Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6341706Z               "line": 1466
2026-06-21T07:19:09.6341816Z             }
2026-06-21T07:19:09.6341920Z           ]
2026-06-21T07:19:09.6342020Z         }
2026-06-21T07:19:09.6342122Z       }
2026-06-21T07:19:09.6342226Z     },
2026-06-21T07:19:09.6342330Z     {
2026-06-21T07:19:09.6342460Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T07:19:09.6344703Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T07:19:09.6344826Z       "requiredStages": [
2026-06-21T07:19:09.6344931Z         "unit"
2026-06-21T07:19:09.6345036Z       ],
2026-06-21T07:19:09.6345270Z       "stages": {
2026-06-21T07:19:09.6345379Z         "doc": {
2026-06-21T07:19:09.6345493Z           "complete": false,
2026-06-21T07:19:09.6345604Z           "evidence": []
2026-06-21T07:19:09.6345708Z         },
2026-06-21T07:19:09.6345818Z         "impl": {
2026-06-21T07:19:09.6346027Z           "complete": true,
2026-06-21T07:19:09.6346142Z           "evidence": [
2026-06-21T07:19:09.6346244Z             {
2026-06-21T07:19:09.6346380Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6346486Z               "line": 3520
2026-06-21T07:19:09.6346596Z             },
2026-06-21T07:19:09.6346699Z             {
2026-06-21T07:19:09.6346837Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6346946Z               "line": 3572
2026-06-21T07:19:09.6347050Z             },
2026-06-21T07:19:09.6347159Z             {
2026-06-21T07:19:09.6347284Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6347402Z               "line": 3617
2026-06-21T07:19:09.6347493Z             },
2026-06-21T07:19:09.6347603Z             {
2026-06-21T07:19:09.6347754Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6347870Z               "line": 92
2026-06-21T07:19:09.6347975Z             },
2026-06-21T07:19:09.6348079Z             {
2026-06-21T07:19:09.6348227Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6348337Z               "line": 148
2026-06-21T07:19:09.6348447Z             },
2026-06-21T07:19:09.6348552Z             {
2026-06-21T07:19:09.6348680Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6348786Z               "line": 192
2026-06-21T07:19:09.6348890Z             },
2026-06-21T07:19:09.6349063Z             {
2026-06-21T07:19:09.6349200Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6349318Z               "line": 200
2026-06-21T07:19:09.6349423Z             },
2026-06-21T07:19:09.6349522Z             {
2026-06-21T07:19:09.6349654Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6349760Z               "line": 211
2026-06-21T07:19:09.6349870Z             },
2026-06-21T07:19:09.6349978Z             {
2026-06-21T07:19:09.6350118Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6350222Z               "line": 265
2026-06-21T07:19:09.6350331Z             },
2026-06-21T07:19:09.6350437Z             {
2026-06-21T07:19:09.6350565Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6350680Z               "line": 279
2026-06-21T07:19:09.6350770Z             }
2026-06-21T07:19:09.6350871Z           ]
2026-06-21T07:19:09.6350980Z         },
2026-06-21T07:19:09.6351081Z         "int": {
2026-06-21T07:19:09.6351200Z           "complete": false,
2026-06-21T07:19:09.6351300Z           "evidence": []
2026-06-21T07:19:09.6351405Z         },
2026-06-21T07:19:09.6351514Z         "unit": {
2026-06-21T07:19:09.6351634Z           "complete": true,
2026-06-21T07:19:09.6351743Z           "evidence": [
2026-06-21T07:19:09.6351848Z             {
2026-06-21T07:19:09.6351978Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6352077Z               "line": 419
2026-06-21T07:19:09.6352180Z             },
2026-06-21T07:19:09.6352280Z             {
2026-06-21T07:19:09.6352420Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6352542Z               "line": 470
2026-06-21T07:19:09.6352643Z             },
2026-06-21T07:19:09.6352749Z             {
2026-06-21T07:19:09.6352876Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6352997Z               "line": 499
2026-06-21T07:19:09.6353097Z             },
2026-06-21T07:19:09.6353196Z             {
2026-06-21T07:19:09.6353330Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6353440Z               "line": 526
2026-06-21T07:19:09.6353544Z             }
2026-06-21T07:19:09.6353636Z           ]
2026-06-21T07:19:09.6353740Z         }
2026-06-21T07:19:09.6353835Z       }
2026-06-21T07:19:09.6354035Z     },
2026-06-21T07:19:09.6354145Z     {
2026-06-21T07:19:09.6354289Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T07:19:09.6354506Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T07:19:09.6354625Z       "requiredStages": [
2026-06-21T07:19:09.6354828Z         "impl",
2026-06-21T07:19:09.6354929Z         "unit"
2026-06-21T07:19:09.6355033Z       ],
2026-06-21T07:19:09.6355143Z       "stages": {
2026-06-21T07:19:09.6355248Z         "doc": {
2026-06-21T07:19:09.6355362Z           "complete": false,
2026-06-21T07:19:09.6355477Z           "evidence": []
2026-06-21T07:19:09.6355582Z         },
2026-06-21T07:19:09.6355691Z         "impl": {
2026-06-21T07:19:09.6355802Z           "complete": true,
2026-06-21T07:19:09.6355915Z           "evidence": [
2026-06-21T07:19:09.6356020Z             {
2026-06-21T07:19:09.6356183Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6356293Z               "line": 62
2026-06-21T07:19:09.6356406Z             },
2026-06-21T07:19:09.6356513Z             {
2026-06-21T07:19:09.6356668Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6356784Z               "line": 71
2026-06-21T07:19:09.6356883Z             },
2026-06-21T07:19:09.6356988Z             {
2026-06-21T07:19:09.6357147Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6357255Z               "line": 80
2026-06-21T07:19:09.6357358Z             },
2026-06-21T07:19:09.6357455Z             {
2026-06-21T07:19:09.6357610Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6357715Z               "line": 88
2026-06-21T07:19:09.6357825Z             },
2026-06-21T07:19:09.6357929Z             {
2026-06-21T07:19:09.6358078Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6358183Z               "line": 33
2026-06-21T07:19:09.6358277Z             },
2026-06-21T07:19:09.6358378Z             {
2026-06-21T07:19:09.6358525Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6358634Z               "line": 65
2026-06-21T07:19:09.6358736Z             },
2026-06-21T07:19:09.6358840Z             {
2026-06-21T07:19:09.6359060Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6359356Z               "line": 74
2026-06-21T07:19:09.6359579Z             },
2026-06-21T07:19:09.6359713Z             {
2026-06-21T07:19:09.6359921Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6360049Z               "line": 93
2026-06-21T07:19:09.6360181Z             },
2026-06-21T07:19:09.6360305Z             {
2026-06-21T07:19:09.6360496Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6360630Z               "line": 102
2026-06-21T07:19:09.6360744Z             },
2026-06-21T07:19:09.6360872Z             {
2026-06-21T07:19:09.6361049Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6361196Z               "line": 111
2026-06-21T07:19:09.6361335Z             },
2026-06-21T07:19:09.6361483Z             {
2026-06-21T07:19:09.6361650Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6361783Z               "line": 122
2026-06-21T07:19:09.6361909Z             },
2026-06-21T07:19:09.6362036Z             {
2026-06-21T07:19:09.6362214Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6362355Z               "line": 140
2026-06-21T07:19:09.6362475Z             },
2026-06-21T07:19:09.6362600Z             {
2026-06-21T07:19:09.6362764Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6362898Z               "line": 149
2026-06-21T07:19:09.6363022Z             },
2026-06-21T07:19:09.6363141Z             {
2026-06-21T07:19:09.6363314Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6363446Z               "line": 158
2026-06-21T07:19:09.6363576Z             },
2026-06-21T07:19:09.6363699Z             {
2026-06-21T07:19:09.6363871Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6364229Z               "line": 169
2026-06-21T07:19:09.6364348Z             },
2026-06-21T07:19:09.6364473Z             {
2026-06-21T07:19:09.6364643Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6364773Z               "line": 177
2026-06-21T07:19:09.6365015Z             },
2026-06-21T07:19:09.6365145Z             {
2026-06-21T07:19:09.6365324Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6365453Z               "line": 186
2026-06-21T07:19:09.6365584Z             },
2026-06-21T07:19:09.6365703Z             {
2026-06-21T07:19:09.6365880Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6366013Z               "line": 195
2026-06-21T07:19:09.6366147Z             },
2026-06-21T07:19:09.6366275Z             {
2026-06-21T07:19:09.6366448Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6366589Z               "line": 204
2026-06-21T07:19:09.6366719Z             },
2026-06-21T07:19:09.6366848Z             {
2026-06-21T07:19:09.6367025Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6367157Z               "line": 216
2026-06-21T07:19:09.6367291Z             },
2026-06-21T07:19:09.6367416Z             {
2026-06-21T07:19:09.6367592Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6367722Z               "line": 223
2026-06-21T07:19:09.6367848Z             },
2026-06-21T07:19:09.6367962Z             {
2026-06-21T07:19:09.6368136Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6368270Z               "line": 232
2026-06-21T07:19:09.6368394Z             },
2026-06-21T07:19:09.6368522Z             {
2026-06-21T07:19:09.6368685Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6368813Z               "line": 239
2026-06-21T07:19:09.6368933Z             },
2026-06-21T07:19:09.6369137Z             {
2026-06-21T07:19:09.6369301Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6369429Z               "line": 306
2026-06-21T07:19:09.6369553Z             },
2026-06-21T07:19:09.6369672Z             {
2026-06-21T07:19:09.6369878Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6370010Z               "line": 318
2026-06-21T07:19:09.6370149Z             },
2026-06-21T07:19:09.6370269Z             {
2026-06-21T07:19:09.6370438Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6370572Z               "line": 405
2026-06-21T07:19:09.6370679Z             }
2026-06-21T07:19:09.6370807Z           ]
2026-06-21T07:19:09.6370928Z         },
2026-06-21T07:19:09.6371060Z         "int": {
2026-06-21T07:19:09.6371205Z           "complete": false,
2026-06-21T07:19:09.6371342Z           "evidence": []
2026-06-21T07:19:09.6371476Z         },
2026-06-21T07:19:09.6371595Z         "unit": {
2026-06-21T07:19:09.6371728Z           "complete": true,
2026-06-21T07:19:09.6371863Z           "evidence": [
2026-06-21T07:19:09.6372000Z             {
2026-06-21T07:19:09.6372173Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6372296Z               "line": 487
2026-06-21T07:19:09.6372425Z             },
2026-06-21T07:19:09.6372553Z             {
2026-06-21T07:19:09.6372725Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6372863Z               "line": 528
2026-06-21T07:19:09.6372973Z             },
2026-06-21T07:19:09.6373079Z             {
2026-06-21T07:19:09.6373211Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6373329Z               "line": 541
2026-06-21T07:19:09.6373435Z             },
2026-06-21T07:19:09.6373535Z             {
2026-06-21T07:19:09.6373677Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6373788Z               "line": 627
2026-06-21T07:19:09.6373897Z             }
2026-06-21T07:19:09.6374001Z           ]
2026-06-21T07:19:09.6374107Z         }
2026-06-21T07:19:09.6374207Z       }
2026-06-21T07:19:09.6374417Z     },
2026-06-21T07:19:09.6374517Z     {
2026-06-21T07:19:09.6374645Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T07:19:09.6374889Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T07:19:09.6375004Z       "requiredStages": [
2026-06-21T07:19:09.6375188Z         "impl",
2026-06-21T07:19:09.6375289Z         "unit"
2026-06-21T07:19:09.6375390Z       ],
2026-06-21T07:19:09.6375499Z       "stages": {
2026-06-21T07:19:09.6375607Z         "doc": {
2026-06-21T07:19:09.6375717Z           "complete": false,
2026-06-21T07:19:09.6375830Z           "evidence": []
2026-06-21T07:19:09.6375934Z         },
2026-06-21T07:19:09.6376045Z         "impl": {
2026-06-21T07:19:09.6376163Z           "complete": true,
2026-06-21T07:19:09.6376272Z           "evidence": [
2026-06-21T07:19:09.6376379Z             {
2026-06-21T07:19:09.6376520Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6376636Z               "line": 175
2026-06-21T07:19:09.6376750Z             },
2026-06-21T07:19:09.6376854Z             {
2026-06-21T07:19:09.6376998Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6377107Z               "line": 171
2026-06-21T07:19:09.6377203Z             }
2026-06-21T07:19:09.6377303Z           ]
2026-06-21T07:19:09.6377403Z         },
2026-06-21T07:19:09.6377512Z         "int": {
2026-06-21T07:19:09.6377623Z           "complete": false,
2026-06-21T07:19:09.6377741Z           "evidence": []
2026-06-21T07:19:09.6377851Z         },
2026-06-21T07:19:09.6377957Z         "unit": {
2026-06-21T07:19:09.6378075Z           "complete": true,
2026-06-21T07:19:09.6378181Z           "evidence": [
2026-06-21T07:19:09.6378286Z             {
2026-06-21T07:19:09.6378427Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6378542Z               "line": 297
2026-06-21T07:19:09.6378645Z             },
2026-06-21T07:19:09.6378748Z             {
2026-06-21T07:19:09.6378897Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6379087Z               "line": 836
2026-06-21T07:19:09.6379188Z             },
2026-06-21T07:19:09.6379293Z             {
2026-06-21T07:19:09.6379445Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6379551Z               "line": 849
2026-06-21T07:19:09.6379660Z             }
2026-06-21T07:19:09.6379760Z           ]
2026-06-21T07:19:09.6379866Z         }
2026-06-21T07:19:09.6379975Z       }
2026-06-21T07:19:09.6380079Z     },
2026-06-21T07:19:09.6380190Z     {
2026-06-21T07:19:09.6380327Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T07:19:09.6380495Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T07:19:09.6380617Z       "requiredStages": [
2026-06-21T07:19:09.6380714Z         "impl",
2026-06-21T07:19:09.6380825Z         "unit"
2026-06-21T07:19:09.6380927Z       ],
2026-06-21T07:19:09.6381036Z       "stages": {
2026-06-21T07:19:09.6381142Z         "doc": {
2026-06-21T07:19:09.6381254Z           "complete": false,
2026-06-21T07:19:09.6381372Z           "evidence": []
2026-06-21T07:19:09.6381464Z         },
2026-06-21T07:19:09.6381578Z         "impl": {
2026-06-21T07:19:09.6381687Z           "complete": true,
2026-06-21T07:19:09.6381807Z           "evidence": [
2026-06-21T07:19:09.6381907Z             {
2026-06-21T07:19:09.6382060Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6382174Z               "line": 116
2026-06-21T07:19:09.6382278Z             },
2026-06-21T07:19:09.6382389Z             {
2026-06-21T07:19:09.6382537Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.6382655Z               "line": 507
2026-06-21T07:19:09.6382766Z             }
2026-06-21T07:19:09.6382865Z           ]
2026-06-21T07:19:09.6382970Z         },
2026-06-21T07:19:09.6383067Z         "int": {
2026-06-21T07:19:09.6383190Z           "complete": false,
2026-06-21T07:19:09.6383300Z           "evidence": []
2026-06-21T07:19:09.6383405Z         },
2026-06-21T07:19:09.6383514Z         "unit": {
2026-06-21T07:19:09.6383720Z           "complete": true,
2026-06-21T07:19:09.6383828Z           "evidence": [
2026-06-21T07:19:09.6383927Z             {
2026-06-21T07:19:09.6384086Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.6384195Z               "line": 541
2026-06-21T07:19:09.6384415Z             }
2026-06-21T07:19:09.6384519Z           ]
2026-06-21T07:19:09.6384620Z         }
2026-06-21T07:19:09.6384729Z       }
2026-06-21T07:19:09.6384829Z     },
2026-06-21T07:19:09.6384934Z     {
2026-06-21T07:19:09.6385082Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T07:19:09.6385278Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T07:19:09.6385396Z       "requiredStages": [
2026-06-21T07:19:09.6385496Z         "impl",
2026-06-21T07:19:09.6385603Z         "unit"
2026-06-21T07:19:09.6385706Z       ],
2026-06-21T07:19:09.6385816Z       "stages": {
2026-06-21T07:19:09.6385922Z         "doc": {
2026-06-21T07:19:09.6386040Z           "complete": false,
2026-06-21T07:19:09.6386163Z           "evidence": []
2026-06-21T07:19:09.6386267Z         },
2026-06-21T07:19:09.6386375Z         "impl": {
2026-06-21T07:19:09.6386489Z           "complete": true,
2026-06-21T07:19:09.6386605Z           "evidence": [
2026-06-21T07:19:09.6386709Z             {
2026-06-21T07:19:09.6386881Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6386986Z               "line": 552
2026-06-21T07:19:09.6387090Z             },
2026-06-21T07:19:09.6387196Z             {
2026-06-21T07:19:09.6387348Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.6387458Z               "line": 28
2026-06-21T07:19:09.6387549Z             }
2026-06-21T07:19:09.6387653Z           ]
2026-06-21T07:19:09.6387758Z         },
2026-06-21T07:19:09.6387863Z         "int": {
2026-06-21T07:19:09.6387987Z           "complete": false,
2026-06-21T07:19:09.6388092Z           "evidence": []
2026-06-21T07:19:09.6388193Z         },
2026-06-21T07:19:09.6388301Z         "unit": {
2026-06-21T07:19:09.6388421Z           "complete": true,
2026-06-21T07:19:09.6388531Z           "evidence": [
2026-06-21T07:19:09.6388635Z             {
2026-06-21T07:19:09.6388780Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.6388884Z               "line": 229
2026-06-21T07:19:09.6389107Z             }
2026-06-21T07:19:09.6389201Z           ]
2026-06-21T07:19:09.6389299Z         }
2026-06-21T07:19:09.6389405Z       }
2026-06-21T07:19:09.6389505Z     },
2026-06-21T07:19:09.6389614Z     {
2026-06-21T07:19:09.6389748Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T07:19:09.6389919Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T07:19:09.6390029Z       "requiredStages": [],
2026-06-21T07:19:09.6390144Z       "stages": {
2026-06-21T07:19:09.6390253Z         "doc": {
2026-06-21T07:19:09.6390358Z           "complete": false,
2026-06-21T07:19:09.6390468Z           "evidence": []
2026-06-21T07:19:09.6390573Z         },
2026-06-21T07:19:09.6390693Z         "impl": {
2026-06-21T07:19:09.6390807Z           "complete": false,
2026-06-21T07:19:09.6390925Z           "evidence": []
2026-06-21T07:19:09.6391031Z         },
2026-06-21T07:19:09.6391131Z         "int": {
2026-06-21T07:19:09.6391250Z           "complete": false,
2026-06-21T07:19:09.6391356Z           "evidence": []
2026-06-21T07:19:09.6391460Z         },
2026-06-21T07:19:09.6391568Z         "unit": {
2026-06-21T07:19:09.6391682Z           "complete": false,
2026-06-21T07:19:09.6391800Z           "evidence": []
2026-06-21T07:19:09.6391904Z         }
2026-06-21T07:19:09.6392009Z       }
2026-06-21T07:19:09.6392110Z     },
2026-06-21T07:19:09.6392214Z     {
2026-06-21T07:19:09.6392354Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T07:19:09.6392529Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T07:19:09.6392649Z       "requiredStages": [
2026-06-21T07:19:09.6392754Z         "impl",
2026-06-21T07:19:09.6392858Z         "unit"
2026-06-21T07:19:09.6393063Z       ],
2026-06-21T07:19:09.6393168Z       "stages": {
2026-06-21T07:19:09.6393274Z         "doc": {
2026-06-21T07:19:09.6393392Z           "complete": false,
2026-06-21T07:19:09.6393497Z           "evidence": []
2026-06-21T07:19:09.6393598Z         },
2026-06-21T07:19:09.6393697Z         "impl": {
2026-06-21T07:19:09.6393908Z           "complete": true,
2026-06-21T07:19:09.6394021Z           "evidence": [
2026-06-21T07:19:09.6394122Z             {
2026-06-21T07:19:09.6394261Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T07:19:09.6394368Z               "line": 19
2026-06-21T07:19:09.6394468Z             },
2026-06-21T07:19:09.6394574Z             {
2026-06-21T07:19:09.6394721Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6394836Z               "line": 463
2026-06-21T07:19:09.6394941Z             },
2026-06-21T07:19:09.6395040Z             {
2026-06-21T07:19:09.6395190Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6395299Z               "line": 499
2026-06-21T07:19:09.6395398Z             },
2026-06-21T07:19:09.6395504Z             {
2026-06-21T07:19:09.6395651Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6395765Z               "line": 547
2026-06-21T07:19:09.6395871Z             },
2026-06-21T07:19:09.6395980Z             {
2026-06-21T07:19:09.6396124Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.6396243Z               "line": 15
2026-06-21T07:19:09.6396347Z             },
2026-06-21T07:19:09.6396453Z             {
2026-06-21T07:19:09.6396590Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.6396704Z               "line": 48
2026-06-21T07:19:09.6396809Z             },
2026-06-21T07:19:09.6396898Z             {
2026-06-21T07:19:09.6397044Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.6397150Z               "line": 119
2026-06-21T07:19:09.6397260Z             },
2026-06-21T07:19:09.6397359Z             {
2026-06-21T07:19:09.6397494Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6397612Z               "line": 3948
2026-06-21T07:19:09.6397713Z             }
2026-06-21T07:19:09.6397823Z           ]
2026-06-21T07:19:09.6397922Z         },
2026-06-21T07:19:09.6398037Z         "int": {
2026-06-21T07:19:09.6398156Z           "complete": false,
2026-06-21T07:19:09.6398270Z           "evidence": []
2026-06-21T07:19:09.6398381Z         },
2026-06-21T07:19:09.6398485Z         "unit": {
2026-06-21T07:19:09.6398595Z           "complete": true,
2026-06-21T07:19:09.6398701Z           "evidence": [
2026-06-21T07:19:09.6398804Z             {
2026-06-21T07:19:09.6399044Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6399162Z               "line": 765
2026-06-21T07:19:09.6399272Z             },
2026-06-21T07:19:09.6399373Z             {
2026-06-21T07:19:09.6399524Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.6399633Z               "line": 165
2026-06-21T07:19:09.6399742Z             },
2026-06-21T07:19:09.6399836Z             {
2026-06-21T07:19:09.6399984Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T07:19:09.6400099Z               "line": 175
2026-06-21T07:19:09.6400193Z             }
2026-06-21T07:19:09.6400299Z           ]
2026-06-21T07:19:09.6400404Z         }
2026-06-21T07:19:09.6404215Z       }
2026-06-21T07:19:09.6404334Z     },
2026-06-21T07:19:09.6404430Z     {
2026-06-21T07:19:09.6404577Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T07:19:09.6405554Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T07:19:09.6405663Z       "requiredStages": [
2026-06-21T07:19:09.6405774Z         "impl",
2026-06-21T07:19:09.6405878Z         "unit"
2026-06-21T07:19:09.6406140Z       ],
2026-06-21T07:19:09.6406249Z       "stages": {
2026-06-21T07:19:09.6406360Z         "doc": {
2026-06-21T07:19:09.6406474Z           "complete": false,
2026-06-21T07:19:09.6406593Z           "evidence": []
2026-06-21T07:19:09.6406689Z         },
2026-06-21T07:19:09.6406793Z         "impl": {
2026-06-21T07:19:09.6407004Z           "complete": true,
2026-06-21T07:19:09.6407113Z           "evidence": [
2026-06-21T07:19:09.6407222Z             {
2026-06-21T07:19:09.6407364Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6407477Z               "line": 192
2026-06-21T07:19:09.6407585Z             },
2026-06-21T07:19:09.6407691Z             {
2026-06-21T07:19:09.6407829Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6407924Z               "line": 279
2026-06-21T07:19:09.6408040Z             }
2026-06-21T07:19:09.6408139Z           ]
2026-06-21T07:19:09.6408234Z         },
2026-06-21T07:19:09.6408336Z         "int": {
2026-06-21T07:19:09.6408440Z           "complete": false,
2026-06-21T07:19:09.6408544Z           "evidence": []
2026-06-21T07:19:09.6408646Z         },
2026-06-21T07:19:09.6408755Z         "unit": {
2026-06-21T07:19:09.6408859Z           "complete": true,
2026-06-21T07:19:09.6409059Z           "evidence": [
2026-06-21T07:19:09.6409155Z             {
2026-06-21T07:19:09.6409299Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6409402Z               "line": 470
2026-06-21T07:19:09.6409507Z             },
2026-06-21T07:19:09.6409600Z             {
2026-06-21T07:19:09.6409727Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.6409837Z               "line": 526
2026-06-21T07:19:09.6409938Z             }
2026-06-21T07:19:09.6410041Z           ]
2026-06-21T07:19:09.6410145Z         }
2026-06-21T07:19:09.6410251Z       }
2026-06-21T07:19:09.6410353Z     },
2026-06-21T07:19:09.6410457Z     {
2026-06-21T07:19:09.6410597Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T07:19:09.6414575Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T07:19:09.6414713Z       "requiredStages": [
2026-06-21T07:19:09.6414818Z         "impl",
2026-06-21T07:19:09.6414922Z         "unit",
2026-06-21T07:19:09.6415019Z         "int"
2026-06-21T07:19:09.6415123Z       ],
2026-06-21T07:19:09.6415223Z       "stages": {
2026-06-21T07:19:09.6415329Z         "doc": {
2026-06-21T07:19:09.6415447Z           "complete": false,
2026-06-21T07:19:09.6415556Z           "evidence": []
2026-06-21T07:19:09.6415661Z         },
2026-06-21T07:19:09.6415762Z         "impl": {
2026-06-21T07:19:09.6415875Z           "complete": true,
2026-06-21T07:19:09.6415976Z           "evidence": [
2026-06-21T07:19:09.6416075Z             {
2026-06-21T07:19:09.6416232Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6416448Z               "line": 116
2026-06-21T07:19:09.6416557Z             },
2026-06-21T07:19:09.6416658Z             {
2026-06-21T07:19:09.6416814Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.6416925Z               "line": 132
2026-06-21T07:19:09.6417115Z             },
2026-06-21T07:19:09.6417220Z             {
2026-06-21T07:19:09.6417367Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.6417472Z               "line": 434
2026-06-21T07:19:09.6417578Z             },
2026-06-21T07:19:09.6417682Z             {
2026-06-21T07:19:09.6417819Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6417929Z               "line": 139
2026-06-21T07:19:09.6418032Z             },
2026-06-21T07:19:09.6418127Z             {
2026-06-21T07:19:09.6418266Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6418370Z               "line": 326
2026-06-21T07:19:09.6418479Z             },
2026-06-21T07:19:09.6418576Z             {
2026-06-21T07:19:09.6418723Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6418843Z               "line": 555
2026-06-21T07:19:09.6419033Z             }
2026-06-21T07:19:09.6419138Z           ]
2026-06-21T07:19:09.6419243Z         },
2026-06-21T07:19:09.6419348Z         "int": {
2026-06-21T07:19:09.6419457Z           "complete": true,
2026-06-21T07:19:09.6419563Z           "evidence": [
2026-06-21T07:19:09.6419667Z             {
2026-06-21T07:19:09.6419840Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T07:19:09.6419944Z               "line": 32
2026-06-21T07:19:09.6420044Z             }
2026-06-21T07:19:09.6420136Z           ]
2026-06-21T07:19:09.6420235Z         },
2026-06-21T07:19:09.6420344Z         "unit": {
2026-06-21T07:19:09.6420460Z           "complete": true,
2026-06-21T07:19:09.6420564Z           "evidence": [
2026-06-21T07:19:09.6420668Z             {
2026-06-21T07:19:09.6420811Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6420918Z               "line": 625
2026-06-21T07:19:09.6421017Z             },
2026-06-21T07:19:09.6421123Z             {
2026-06-21T07:19:09.6421266Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6421366Z               "line": 646
2026-06-21T07:19:09.6421467Z             },
2026-06-21T07:19:09.6421571Z             {
2026-06-21T07:19:09.6421719Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6421829Z               "line": 662
2026-06-21T07:19:09.6421928Z             },
2026-06-21T07:19:09.6422039Z             {
2026-06-21T07:19:09.6422177Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6422282Z               "line": 680
2026-06-21T07:19:09.6422383Z             },
2026-06-21T07:19:09.6422487Z             {
2026-06-21T07:19:09.6422629Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6422740Z               "line": 704
2026-06-21T07:19:09.6422844Z             }
2026-06-21T07:19:09.6422944Z           ]
2026-06-21T07:19:09.6423046Z         }
2026-06-21T07:19:09.6423145Z       }
2026-06-21T07:19:09.6423253Z     },
2026-06-21T07:19:09.6423354Z     {
2026-06-21T07:19:09.6423490Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T07:19:09.6423671Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T07:19:09.6423777Z       "requiredStages": [
2026-06-21T07:19:09.6423889Z         "impl",
2026-06-21T07:19:09.6423991Z         "unit"
2026-06-21T07:19:09.6424100Z       ],
2026-06-21T07:19:09.6424209Z       "stages": {
2026-06-21T07:19:09.6424301Z         "doc": {
2026-06-21T07:19:09.6424419Z           "complete": false,
2026-06-21T07:19:09.6424519Z           "evidence": []
2026-06-21T07:19:09.6424625Z         },
2026-06-21T07:19:09.6424734Z         "impl": {
2026-06-21T07:19:09.6424843Z           "complete": true,
2026-06-21T07:19:09.6424950Z           "evidence": [
2026-06-21T07:19:09.6425167Z             {
2026-06-21T07:19:09.6425317Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.6425425Z               "line": 35
2026-06-21T07:19:09.6425526Z             }
2026-06-21T07:19:09.6425617Z           ]
2026-06-21T07:19:09.6425711Z         },
2026-06-21T07:19:09.6425899Z         "int": {
2026-06-21T07:19:09.6426017Z           "complete": false,
2026-06-21T07:19:09.6426125Z           "evidence": []
2026-06-21T07:19:09.6426221Z         },
2026-06-21T07:19:09.6426317Z         "unit": {
2026-06-21T07:19:09.6426430Z           "complete": true,
2026-06-21T07:19:09.6426550Z           "evidence": [
2026-06-21T07:19:09.6426650Z             {
2026-06-21T07:19:09.6426792Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T07:19:09.6426908Z               "line": 220
2026-06-21T07:19:09.6427008Z             }
2026-06-21T07:19:09.6427107Z           ]
2026-06-21T07:19:09.6427208Z         }
2026-06-21T07:19:09.6427312Z       }
2026-06-21T07:19:09.6427412Z     },
2026-06-21T07:19:09.6427513Z     {
2026-06-21T07:19:09.6427651Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T07:19:09.6430972Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T07:19:09.6431101Z       "requiredStages": [
2026-06-21T07:19:09.6431204Z         "impl",
2026-06-21T07:19:09.6431309Z         "unit",
2026-06-21T07:19:09.6431413Z         "int"
2026-06-21T07:19:09.6431516Z       ],
2026-06-21T07:19:09.6431626Z       "stages": {
2026-06-21T07:19:09.6431731Z         "doc": {
2026-06-21T07:19:09.6431840Z           "complete": false,
2026-06-21T07:19:09.6431960Z           "evidence": []
2026-06-21T07:19:09.6432051Z         },
2026-06-21T07:19:09.6432155Z         "impl": {
2026-06-21T07:19:09.6432275Z           "complete": true,
2026-06-21T07:19:09.6432379Z           "evidence": [
2026-06-21T07:19:09.6432488Z             {
2026-06-21T07:19:09.6432643Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6432756Z               "line": 202
2026-06-21T07:19:09.6432851Z             },
2026-06-21T07:19:09.6432962Z             {
2026-06-21T07:19:09.6433109Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.6433204Z               "line": 107
2026-06-21T07:19:09.6433305Z             },
2026-06-21T07:19:09.6433409Z             {
2026-06-21T07:19:09.6433549Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.6433648Z               "line": 138
2026-06-21T07:19:09.6433757Z             },
2026-06-21T07:19:09.6433861Z             {
2026-06-21T07:19:09.6434012Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6434121Z               "line": 209
2026-06-21T07:19:09.6434221Z             },
2026-06-21T07:19:09.6434327Z             {
2026-06-21T07:19:09.6434468Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6434579Z               "line": 246
2026-06-21T07:19:09.6434689Z             },
2026-06-21T07:19:09.6434788Z             {
2026-06-21T07:19:09.6435046Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6435151Z               "line": 379
2026-06-21T07:19:09.6435256Z             }
2026-06-21T07:19:09.6435352Z           ]
2026-06-21T07:19:09.6435451Z         },
2026-06-21T07:19:09.6435562Z         "int": {
2026-06-21T07:19:09.6435761Z           "complete": true,
2026-06-21T07:19:09.6435872Z           "evidence": [
2026-06-21T07:19:09.6435976Z             {
2026-06-21T07:19:09.6436144Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T07:19:09.6436252Z               "line": 17
2026-06-21T07:19:09.6436358Z             }
2026-06-21T07:19:09.6436459Z           ]
2026-06-21T07:19:09.6436558Z         },
2026-06-21T07:19:09.6436666Z         "unit": {
2026-06-21T07:19:09.6436781Z           "complete": true,
2026-06-21T07:19:09.6436896Z           "evidence": [
2026-06-21T07:19:09.6436990Z             {
2026-06-21T07:19:09.6437139Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6437244Z               "line": 982
2026-06-21T07:19:09.6437343Z             }
2026-06-21T07:19:09.6437449Z           ]
2026-06-21T07:19:09.6437549Z         }
2026-06-21T07:19:09.6437653Z       }
2026-06-21T07:19:09.6437754Z     },
2026-06-21T07:19:09.6437858Z     {
2026-06-21T07:19:09.6437996Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T07:19:09.6438278Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T07:19:09.6438398Z       "requiredStages": [
2026-06-21T07:19:09.6438507Z         "impl",
2026-06-21T07:19:09.6438611Z         "unit"
2026-06-21T07:19:09.6438718Z       ],
2026-06-21T07:19:09.6438817Z       "stages": {
2026-06-21T07:19:09.6438926Z         "doc": {
2026-06-21T07:19:09.6439120Z           "complete": false,
2026-06-21T07:19:09.6439233Z           "evidence": []
2026-06-21T07:19:09.6439334Z         },
2026-06-21T07:19:09.6439434Z         "impl": {
2026-06-21T07:19:09.6439542Z           "complete": true,
2026-06-21T07:19:09.6439653Z           "evidence": [
2026-06-21T07:19:09.6439753Z             {
2026-06-21T07:19:09.6439905Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.6440011Z               "line": 405
2026-06-21T07:19:09.6440106Z             },
2026-06-21T07:19:09.6440205Z             {
2026-06-21T07:19:09.6440355Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.6440454Z               "line": 409
2026-06-21T07:19:09.6440559Z             },
2026-06-21T07:19:09.6440660Z             {
2026-06-21T07:19:09.6440807Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.6440907Z               "line": 156
2026-06-21T07:19:09.6441013Z             }
2026-06-21T07:19:09.6441117Z           ]
2026-06-21T07:19:09.6441217Z         },
2026-06-21T07:19:09.6441323Z         "int": {
2026-06-21T07:19:09.6441426Z           "complete": false,
2026-06-21T07:19:09.6441542Z           "evidence": []
2026-06-21T07:19:09.6441638Z         },
2026-06-21T07:19:09.6441745Z         "unit": {
2026-06-21T07:19:09.6441849Z           "complete": true,
2026-06-21T07:19:09.6441955Z           "evidence": [
2026-06-21T07:19:09.6442057Z             {
2026-06-21T07:19:09.6442201Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.6442301Z               "line": 865
2026-06-21T07:19:09.6442396Z             },
2026-06-21T07:19:09.6442500Z             {
2026-06-21T07:19:09.6442649Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.6442753Z               "line": 879
2026-06-21T07:19:09.6442859Z             },
2026-06-21T07:19:09.6442954Z             {
2026-06-21T07:19:09.6443092Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.6443203Z               "line": 898
2026-06-21T07:19:09.6443306Z             },
2026-06-21T07:19:09.6443411Z             {
2026-06-21T07:19:09.6443551Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.6443649Z               "line": 915
2026-06-21T07:19:09.6443842Z             },
2026-06-21T07:19:09.6443950Z             {
2026-06-21T07:19:09.6444104Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.6444213Z               "line": 441
2026-06-21T07:19:09.6444321Z             }
2026-06-21T07:19:09.6444503Z           ]
2026-06-21T07:19:09.6444605Z         }
2026-06-21T07:19:09.6444709Z       }
2026-06-21T07:19:09.6444815Z     },
2026-06-21T07:19:09.6444906Z     {
2026-06-21T07:19:09.6445048Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T07:19:09.6455091Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T07:19:09.6455251Z       "requiredStages": [
2026-06-21T07:19:09.6455356Z         "doc",
2026-06-21T07:19:09.6455462Z         "impl",
2026-06-21T07:19:09.6455570Z         "unit",
2026-06-21T07:19:09.6455666Z         "int"
2026-06-21T07:19:09.6455766Z       ],
2026-06-21T07:19:09.6455875Z       "stages": {
2026-06-21T07:19:09.6456081Z         "doc": {
2026-06-21T07:19:09.6456204Z           "complete": true,
2026-06-21T07:19:09.6456310Z           "evidence": [
2026-06-21T07:19:09.6456409Z             {
2026-06-21T07:19:09.6456534Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6456645Z               "line": 420
2026-06-21T07:19:09.6456843Z             },
2026-06-21T07:19:09.6456940Z             {
2026-06-21T07:19:09.6457072Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6457187Z               "line": 402
2026-06-21T07:19:09.6457284Z             }
2026-06-21T07:19:09.6457391Z           ]
2026-06-21T07:19:09.6457492Z         },
2026-06-21T07:19:09.6457594Z         "impl": {
2026-06-21T07:19:09.6457692Z           "complete": true,
2026-06-21T07:19:09.6457801Z           "evidence": [
2026-06-21T07:19:09.6457906Z             {
2026-06-21T07:19:09.6458054Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6458173Z               "line": 797
2026-06-21T07:19:09.6458269Z             },
2026-06-21T07:19:09.6458369Z             {
2026-06-21T07:19:09.6458507Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6458617Z               "line": 822
2026-06-21T07:19:09.6458721Z             },
2026-06-21T07:19:09.6458822Z             {
2026-06-21T07:19:09.6459045Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6459155Z               "line": 839
2026-06-21T07:19:09.6459251Z             },
2026-06-21T07:19:09.6459356Z             {
2026-06-21T07:19:09.6459505Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6459622Z               "line": 854
2026-06-21T07:19:09.6459723Z             },
2026-06-21T07:19:09.6459829Z             {
2026-06-21T07:19:09.6459975Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6460093Z               "line": 874
2026-06-21T07:19:09.6460198Z             },
2026-06-21T07:19:09.6460292Z             {
2026-06-21T07:19:09.6460439Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6460550Z               "line": 964
2026-06-21T07:19:09.6460649Z             },
2026-06-21T07:19:09.6460753Z             {
2026-06-21T07:19:09.6460897Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6461015Z               "line": 1016
2026-06-21T07:19:09.6461117Z             },
2026-06-21T07:19:09.6461221Z             {
2026-06-21T07:19:09.6461359Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6461470Z               "line": 1075
2026-06-21T07:19:09.6461565Z             },
2026-06-21T07:19:09.6461674Z             {
2026-06-21T07:19:09.6461827Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.6461937Z               "line": 527
2026-06-21T07:19:09.6462042Z             }
2026-06-21T07:19:09.6462137Z           ]
2026-06-21T07:19:09.6462247Z         },
2026-06-21T07:19:09.6462352Z         "int": {
2026-06-21T07:19:09.6462471Z           "complete": true,
2026-06-21T07:19:09.6462585Z           "evidence": [
2026-06-21T07:19:09.6462681Z             {
2026-06-21T07:19:09.6462837Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T07:19:09.6462941Z               "line": 35
2026-06-21T07:19:09.6463051Z             },
2026-06-21T07:19:09.6463154Z             {
2026-06-21T07:19:09.6463311Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T07:19:09.6463421Z               "line": 569
2026-06-21T07:19:09.6463525Z             },
2026-06-21T07:19:09.6463630Z             {
2026-06-21T07:19:09.6463764Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T07:19:09.6463873Z               "line": 590
2026-06-21T07:19:09.6463975Z             }
2026-06-21T07:19:09.6464074Z           ]
2026-06-21T07:19:09.6464174Z         },
2026-06-21T07:19:09.6464279Z         "unit": {
2026-06-21T07:19:09.6464399Z           "complete": true,
2026-06-21T07:19:09.6464503Z           "evidence": [
2026-06-21T07:19:09.6464604Z             {
2026-06-21T07:19:09.6464741Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6464976Z               "line": 1202
2026-06-21T07:19:09.6465079Z             },
2026-06-21T07:19:09.6465185Z             {
2026-06-21T07:19:09.6465334Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6465446Z               "line": 1246
2026-06-21T07:19:09.6465637Z             },
2026-06-21T07:19:09.6465744Z             {
2026-06-21T07:19:09.6465888Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6465993Z               "line": 1260
2026-06-21T07:19:09.6466101Z             },
2026-06-21T07:19:09.6466207Z             {
2026-06-21T07:19:09.6466346Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6466464Z               "line": 1278
2026-06-21T07:19:09.6466556Z             },
2026-06-21T07:19:09.6466660Z             {
2026-06-21T07:19:09.6466802Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6466909Z               "line": 1302
2026-06-21T07:19:09.6467018Z             },
2026-06-21T07:19:09.6467113Z             {
2026-06-21T07:19:09.6467261Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6467361Z               "line": 1529
2026-06-21T07:19:09.6467471Z             }
2026-06-21T07:19:09.6467571Z           ]
2026-06-21T07:19:09.6467680Z         }
2026-06-21T07:19:09.6467786Z       }
2026-06-21T07:19:09.6467877Z     },
2026-06-21T07:19:09.6467985Z     {
2026-06-21T07:19:09.6468106Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T07:19:09.6470431Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T07:19:09.6470554Z       "requiredStages": [
2026-06-21T07:19:09.6470672Z         "unit",
2026-06-21T07:19:09.6470772Z         "int"
2026-06-21T07:19:09.6470871Z       ],
2026-06-21T07:19:09.6470970Z       "stages": {
2026-06-21T07:19:09.6471071Z         "doc": {
2026-06-21T07:19:09.6471190Z           "complete": true,
2026-06-21T07:19:09.6471295Z           "evidence": [
2026-06-21T07:19:09.6471405Z             {
2026-06-21T07:19:09.6471528Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6471633Z               "line": 381
2026-06-21T07:19:09.6471734Z             }
2026-06-21T07:19:09.6471838Z           ]
2026-06-21T07:19:09.6471939Z         },
2026-06-21T07:19:09.6472044Z         "impl": {
2026-06-21T07:19:09.6472158Z           "complete": true,
2026-06-21T07:19:09.6472263Z           "evidence": [
2026-06-21T07:19:09.6472373Z             {
2026-06-21T07:19:09.6472511Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6472617Z               "line": 135
2026-06-21T07:19:09.6472716Z             }
2026-06-21T07:19:09.6472816Z           ]
2026-06-21T07:19:09.6472922Z         },
2026-06-21T07:19:09.6473031Z         "int": {
2026-06-21T07:19:09.6473145Z           "complete": true,
2026-06-21T07:19:09.6473256Z           "evidence": [
2026-06-21T07:19:09.6473360Z             {
2026-06-21T07:19:09.6473506Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6473620Z               "line": 1042
2026-06-21T07:19:09.6473728Z             }
2026-06-21T07:19:09.6473833Z           ]
2026-06-21T07:19:09.6473943Z         },
2026-06-21T07:19:09.6474048Z         "unit": {
2026-06-21T07:19:09.6474162Z           "complete": true,
2026-06-21T07:19:09.6474268Z           "evidence": [
2026-06-21T07:19:09.6474481Z             {
2026-06-21T07:19:09.6474625Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.6474734Z               "line": 2370
2026-06-21T07:19:09.6474839Z             }
2026-06-21T07:19:09.6474940Z           ]
2026-06-21T07:19:09.6475049Z         }
2026-06-21T07:19:09.6475240Z       }
2026-06-21T07:19:09.6475344Z     },
2026-06-21T07:19:09.6475440Z     {
2026-06-21T07:19:09.6475579Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T07:19:09.6476448Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T07:19:09.6476568Z       "requiredStages": [
2026-06-21T07:19:09.6476666Z         "doc",
2026-06-21T07:19:09.6476777Z         "impl",
2026-06-21T07:19:09.6476881Z         "unit"
2026-06-21T07:19:09.6476990Z       ],
2026-06-21T07:19:09.6477101Z       "stages": {
2026-06-21T07:19:09.6477201Z         "doc": {
2026-06-21T07:19:09.6477315Z           "complete": true,
2026-06-21T07:19:09.6477426Z           "evidence": [
2026-06-21T07:19:09.6477530Z             {
2026-06-21T07:19:09.6477663Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6477784Z               "line": 366
2026-06-21T07:19:09.6477883Z             }
2026-06-21T07:19:09.6477988Z           ]
2026-06-21T07:19:09.6478089Z         },
2026-06-21T07:19:09.6478197Z         "impl": {
2026-06-21T07:19:09.6478307Z           "complete": true,
2026-06-21T07:19:09.6478423Z           "evidence": [
2026-06-21T07:19:09.6478521Z             {
2026-06-21T07:19:09.6478671Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.6478789Z               "line": 87
2026-06-21T07:19:09.6478893Z             },
2026-06-21T07:19:09.6479089Z             {
2026-06-21T07:19:09.6479226Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6479346Z               "line": 105
2026-06-21T07:19:09.6479456Z             },
2026-06-21T07:19:09.6479560Z             {
2026-06-21T07:19:09.6479714Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.6479818Z               "line": 55
2026-06-21T07:19:09.6479917Z             },
2026-06-21T07:19:09.6480024Z             {
2026-06-21T07:19:09.6480165Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.6480276Z               "line": 31
2026-06-21T07:19:09.6480381Z             },
2026-06-21T07:19:09.6480480Z             {
2026-06-21T07:19:09.6480625Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.6480728Z               "line": 446
2026-06-21T07:19:09.6480833Z             },
2026-06-21T07:19:09.6480939Z             {
2026-06-21T07:19:09.6481090Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.6481190Z               "line": 95
2026-06-21T07:19:09.6481300Z             },
2026-06-21T07:19:09.6481402Z             {
2026-06-21T07:19:09.6481550Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.6481660Z               "line": 29
2026-06-21T07:19:09.6481765Z             },
2026-06-21T07:19:09.6481870Z             {
2026-06-21T07:19:09.6482013Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.6482131Z               "line": 104
2026-06-21T07:19:09.6482233Z             },
2026-06-21T07:19:09.6482342Z             {
2026-06-21T07:19:09.6482499Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6482599Z               "line": 208
2026-06-21T07:19:09.6482708Z             },
2026-06-21T07:19:09.6482809Z             {
2026-06-21T07:19:09.6482952Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T07:19:09.6483061Z               "line": 28
2026-06-21T07:19:09.6483162Z             },
2026-06-21T07:19:09.6483262Z             {
2026-06-21T07:19:09.6483400Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T07:19:09.6483614Z               "line": 74
2026-06-21T07:19:09.6483715Z             },
2026-06-21T07:19:09.6483821Z             {
2026-06-21T07:19:09.6483972Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.6484090Z               "line": 32
2026-06-21T07:19:09.6484279Z             },
2026-06-21T07:19:09.6484383Z             {
2026-06-21T07:19:09.6484528Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6484637Z               "line": 40
2026-06-21T07:19:09.6484741Z             },
2026-06-21T07:19:09.6484842Z             {
2026-06-21T07:19:09.6484989Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6485095Z               "line": 184
2026-06-21T07:19:09.6485190Z             },
2026-06-21T07:19:09.6485294Z             {
2026-06-21T07:19:09.6485419Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.6485538Z               "line": 61
2026-06-21T07:19:09.6485638Z             },
2026-06-21T07:19:09.6485739Z             {
2026-06-21T07:19:09.6485876Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.6485986Z               "line": 131
2026-06-21T07:19:09.6486091Z             },
2026-06-21T07:19:09.6486195Z             {
2026-06-21T07:19:09.6486339Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.6486449Z               "line": 223
2026-06-21T07:19:09.6486557Z             },
2026-06-21T07:19:09.6486661Z             {
2026-06-21T07:19:09.6486809Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T07:19:09.6486907Z               "line": 37
2026-06-21T07:19:09.6487013Z             },
2026-06-21T07:19:09.6487113Z             {
2026-06-21T07:19:09.6487250Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.6487361Z               "line": 38
2026-06-21T07:19:09.6487466Z             },
2026-06-21T07:19:09.6487570Z             {
2026-06-21T07:19:09.6487723Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.6487828Z               "line": 36
2026-06-21T07:19:09.6487933Z             },
2026-06-21T07:19:09.6488034Z             {
2026-06-21T07:19:09.6488171Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T07:19:09.6488286Z               "line": 40
2026-06-21T07:19:09.6488386Z             }
2026-06-21T07:19:09.6488500Z           ]
2026-06-21T07:19:09.6488596Z         },
2026-06-21T07:19:09.6488706Z         "int": {
2026-06-21T07:19:09.6488829Z           "complete": false,
2026-06-21T07:19:09.6488935Z           "evidence": []
2026-06-21T07:19:09.6489130Z         },
2026-06-21T07:19:09.6489236Z         "unit": {
2026-06-21T07:19:09.6489354Z           "complete": true,
2026-06-21T07:19:09.6489457Z           "evidence": [
2026-06-21T07:19:09.6489567Z             {
2026-06-21T07:19:09.6489716Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.6489820Z               "line": 212
2026-06-21T07:19:09.6489920Z             },
2026-06-21T07:19:09.6490011Z             {
2026-06-21T07:19:09.6490177Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T07:19:09.6490288Z               "line": 136
2026-06-21T07:19:09.6490392Z             },
2026-06-21T07:19:09.6490497Z             {
2026-06-21T07:19:09.6490645Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.6490768Z               "line": 685
2026-06-21T07:19:09.6490855Z             },
2026-06-21T07:19:09.6490959Z             {
2026-06-21T07:19:09.6491107Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.6491218Z               "line": 224
2026-06-21T07:19:09.6491316Z             },
2026-06-21T07:19:09.6491412Z             {
2026-06-21T07:19:09.6491566Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T07:19:09.6491665Z               "line": 206
2026-06-21T07:19:09.6491773Z             },
2026-06-21T07:19:09.6491874Z             {
2026-06-21T07:19:09.6492015Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.6492220Z               "line": 112
2026-06-21T07:19:09.6492325Z             },
2026-06-21T07:19:09.6492430Z             {
2026-06-21T07:19:09.6492563Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T07:19:09.6492677Z               "line": 157
2026-06-21T07:19:09.6492773Z             },
2026-06-21T07:19:09.6492977Z             {
2026-06-21T07:19:09.6493127Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.6493236Z               "line": 215
2026-06-21T07:19:09.6493345Z             },
2026-06-21T07:19:09.6493446Z             {
2026-06-21T07:19:09.6493593Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.6493698Z               "line": 141
2026-06-21T07:19:09.6493808Z             },
2026-06-21T07:19:09.6493917Z             {
2026-06-21T07:19:09.6494047Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T07:19:09.6494151Z               "line": 162
2026-06-21T07:19:09.6494256Z             }
2026-06-21T07:19:09.6494357Z           ]
2026-06-21T07:19:09.6494452Z         }
2026-06-21T07:19:09.6494565Z       }
2026-06-21T07:19:09.6494665Z     },
2026-06-21T07:19:09.6494760Z     {
2026-06-21T07:19:09.6494910Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T07:19:09.6496842Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T07:19:09.6496967Z       "requiredStages": [
2026-06-21T07:19:09.6497075Z         "doc",
2026-06-21T07:19:09.6497188Z         "impl",
2026-06-21T07:19:09.6497293Z         "unit",
2026-06-21T07:19:09.6497397Z         "int"
2026-06-21T07:19:09.6497500Z       ],
2026-06-21T07:19:09.6497606Z       "stages": {
2026-06-21T07:19:09.6497712Z         "doc": {
2026-06-21T07:19:09.6497825Z           "complete": true,
2026-06-21T07:19:09.6497936Z           "evidence": [
2026-06-21T07:19:09.6498045Z             {
2026-06-21T07:19:09.6498178Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.6498274Z               "line": 250
2026-06-21T07:19:09.6498379Z             }
2026-06-21T07:19:09.6498483Z           ]
2026-06-21T07:19:09.6498589Z         },
2026-06-21T07:19:09.6498693Z         "impl": {
2026-06-21T07:19:09.6498817Z           "complete": true,
2026-06-21T07:19:09.6498913Z           "evidence": [
2026-06-21T07:19:09.6499079Z             {
2026-06-21T07:19:09.6499218Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.6499322Z               "line": 135
2026-06-21T07:19:09.6499427Z             },
2026-06-21T07:19:09.6499533Z             {
2026-06-21T07:19:09.6499670Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.6499781Z               "line": 157
2026-06-21T07:19:09.6499886Z             }
2026-06-21T07:19:09.6499994Z           ]
2026-06-21T07:19:09.6500098Z         },
2026-06-21T07:19:09.6500205Z         "int": {
2026-06-21T07:19:09.6500318Z           "complete": true,
2026-06-21T07:19:09.6500422Z           "evidence": [
2026-06-21T07:19:09.6500524Z             {
2026-06-21T07:19:09.6500680Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T07:19:09.6500786Z               "line": 15
2026-06-21T07:19:09.6500885Z             }
2026-06-21T07:19:09.6500985Z           ]
2026-06-21T07:19:09.6501086Z         },
2026-06-21T07:19:09.6501200Z         "unit": {
2026-06-21T07:19:09.6501309Z           "complete": true,
2026-06-21T07:19:09.6501420Z           "evidence": [
2026-06-21T07:19:09.6501525Z             {
2026-06-21T07:19:09.6501778Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T07:19:09.6501891Z               "line": 233
2026-06-21T07:19:09.6501997Z             }
2026-06-21T07:19:09.6504878Z           ]
2026-06-21T07:19:09.6505008Z         }
2026-06-21T07:19:09.6505115Z       }
2026-06-21T07:19:09.6505220Z     },
2026-06-21T07:19:09.6505470Z     {
2026-06-21T07:19:09.6505628Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T07:19:09.6505818Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T07:19:09.6505939Z       "requiredStages": [
2026-06-21T07:19:09.6506043Z         "impl",
2026-06-21T07:19:09.6506152Z         "unit"
2026-06-21T07:19:09.6506258Z       ],
2026-06-21T07:19:09.6506358Z       "stages": {
2026-06-21T07:19:09.6506467Z         "doc": {
2026-06-21T07:19:09.6506587Z           "complete": false,
2026-06-21T07:19:09.6506691Z           "evidence": []
2026-06-21T07:19:09.6506791Z         },
2026-06-21T07:19:09.6506893Z         "impl": {
2026-06-21T07:19:09.6507006Z           "complete": true,
2026-06-21T07:19:09.6507110Z           "evidence": [
2026-06-21T07:19:09.6507212Z             {
2026-06-21T07:19:09.6507354Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6507460Z               "line": 95
2026-06-21T07:19:09.6507564Z             },
2026-06-21T07:19:09.6507668Z             {
2026-06-21T07:19:09.6507810Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6507919Z               "line": 117
2026-06-21T07:19:09.6508023Z             }
2026-06-21T07:19:09.6508123Z           ]
2026-06-21T07:19:09.6508224Z         },
2026-06-21T07:19:09.6508319Z         "int": {
2026-06-21T07:19:09.6508428Z           "complete": false,
2026-06-21T07:19:09.6508534Z           "evidence": []
2026-06-21T07:19:09.6508633Z         },
2026-06-21T07:19:09.6508743Z         "unit": {
2026-06-21T07:19:09.6508843Z           "complete": true,
2026-06-21T07:19:09.6509043Z           "evidence": [
2026-06-21T07:19:09.6509139Z             {
2026-06-21T07:19:09.6509282Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6509392Z               "line": 250
2026-06-21T07:19:09.6509492Z             },
2026-06-21T07:19:09.6509597Z             {
2026-06-21T07:19:09.6509736Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6509844Z               "line": 412
2026-06-21T07:19:09.6509945Z             },
2026-06-21T07:19:09.6510051Z             {
2026-06-21T07:19:09.6510192Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6510293Z               "line": 611
2026-06-21T07:19:09.6510394Z             },
2026-06-21T07:19:09.6510488Z             {
2026-06-21T07:19:09.6510630Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6510740Z               "line": 669
2026-06-21T07:19:09.6510841Z             }
2026-06-21T07:19:09.6510949Z           ]
2026-06-21T07:19:09.6511050Z         }
2026-06-21T07:19:09.6511141Z       }
2026-06-21T07:19:09.6511235Z     },
2026-06-21T07:19:09.6511342Z     {
2026-06-21T07:19:09.6511475Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T07:19:09.6514022Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T07:19:09.6514141Z       "requiredStages": [
2026-06-21T07:19:09.6514346Z         "impl",
2026-06-21T07:19:09.6514455Z         "unit",
2026-06-21T07:19:09.6514552Z         "int"
2026-06-21T07:19:09.6514660Z       ],
2026-06-21T07:19:09.6514765Z       "stages": {
2026-06-21T07:19:09.6514867Z         "doc": {
2026-06-21T07:19:09.6514989Z           "complete": false,
2026-06-21T07:19:09.6515191Z           "evidence": []
2026-06-21T07:19:09.6515295Z         },
2026-06-21T07:19:09.6515400Z         "impl": {
2026-06-21T07:19:09.6515506Z           "complete": true,
2026-06-21T07:19:09.6515614Z           "evidence": [
2026-06-21T07:19:09.6515719Z             {
2026-06-21T07:19:09.6515866Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6515969Z               "line": 925
2026-06-21T07:19:09.6516068Z             },
2026-06-21T07:19:09.6516174Z             {
2026-06-21T07:19:09.6516307Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6516416Z               "line": 994
2026-06-21T07:19:09.6516518Z             }
2026-06-21T07:19:09.6516626Z           ]
2026-06-21T07:19:09.6516721Z         },
2026-06-21T07:19:09.6516823Z         "int": {
2026-06-21T07:19:09.6516932Z           "complete": true,
2026-06-21T07:19:09.6517041Z           "evidence": [
2026-06-21T07:19:09.6517148Z             {
2026-06-21T07:19:09.6517294Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T07:19:09.6517409Z               "line": 187
2026-06-21T07:19:09.6517509Z             },
2026-06-21T07:19:09.6517609Z             {
2026-06-21T07:19:09.6517753Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T07:19:09.6517857Z               "line": 348
2026-06-21T07:19:09.6517962Z             }
2026-06-21T07:19:09.6518063Z           ]
2026-06-21T07:19:09.6518167Z         },
2026-06-21T07:19:09.6518266Z         "unit": {
2026-06-21T07:19:09.6518380Z           "complete": true,
2026-06-21T07:19:09.6518489Z           "evidence": [
2026-06-21T07:19:09.6518588Z             {
2026-06-21T07:19:09.6518727Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6518841Z               "line": 1206
2026-06-21T07:19:09.6519012Z             },
2026-06-21T07:19:09.6519113Z             {
2026-06-21T07:19:09.6519236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6519347Z               "line": 8116
2026-06-21T07:19:09.6519447Z             }
2026-06-21T07:19:09.6519551Z           ]
2026-06-21T07:19:09.6519647Z         }
2026-06-21T07:19:09.6519737Z       }
2026-06-21T07:19:09.6519842Z     },
2026-06-21T07:19:09.6519942Z     {
2026-06-21T07:19:09.6520076Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T07:19:09.6520291Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T07:19:09.6520409Z       "requiredStages": [
2026-06-21T07:19:09.6520514Z         "impl",
2026-06-21T07:19:09.6520620Z         "unit"
2026-06-21T07:19:09.6520719Z       ],
2026-06-21T07:19:09.6520829Z       "stages": {
2026-06-21T07:19:09.6520921Z         "doc": {
2026-06-21T07:19:09.6521039Z           "complete": false,
2026-06-21T07:19:09.6521147Z           "evidence": []
2026-06-21T07:19:09.6521252Z         },
2026-06-21T07:19:09.6521358Z         "impl": {
2026-06-21T07:19:09.6521471Z           "complete": true,
2026-06-21T07:19:09.6521577Z           "evidence": [
2026-06-21T07:19:09.6521682Z             {
2026-06-21T07:19:09.6521829Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6521935Z               "line": 262
2026-06-21T07:19:09.6522025Z             },
2026-06-21T07:19:09.6522129Z             {
2026-06-21T07:19:09.6522273Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6522378Z               "line": 307
2026-06-21T07:19:09.6522487Z             },
2026-06-21T07:19:09.6522584Z             {
2026-06-21T07:19:09.6522721Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6522821Z               "line": 319
2026-06-21T07:19:09.6522927Z             }
2026-06-21T07:19:09.6523035Z           ]
2026-06-21T07:19:09.6523228Z         },
2026-06-21T07:19:09.6523331Z         "int": {
2026-06-21T07:19:09.6523435Z           "complete": false,
2026-06-21T07:19:09.6523559Z           "evidence": []
2026-06-21T07:19:09.6523662Z         },
2026-06-21T07:19:09.6523762Z         "unit": {
2026-06-21T07:19:09.6523872Z           "complete": true,
2026-06-21T07:19:09.6524071Z           "evidence": [
2026-06-21T07:19:09.6524172Z             {
2026-06-21T07:19:09.6524315Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6524419Z               "line": 455
2026-06-21T07:19:09.6524521Z             },
2026-06-21T07:19:09.6524620Z             {
2026-06-21T07:19:09.6524764Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6524869Z               "line": 499
2026-06-21T07:19:09.6524968Z             }
2026-06-21T07:19:09.6525063Z           ]
2026-06-21T07:19:09.6525160Z         }
2026-06-21T07:19:09.6525260Z       }
2026-06-21T07:19:09.6525369Z     },
2026-06-21T07:19:09.6525470Z     {
2026-06-21T07:19:09.6525593Z       "id": "REQ-HOST-RUN-1",
2026-06-21T07:19:09.6528102Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T07:19:09.6528236Z       "requiredStages": [
2026-06-21T07:19:09.6528337Z         "impl",
2026-06-21T07:19:09.6528435Z         "unit",
2026-06-21T07:19:09.6528541Z         "int"
2026-06-21T07:19:09.6528643Z       ],
2026-06-21T07:19:09.6528746Z       "stages": {
2026-06-21T07:19:09.6528850Z         "doc": {
2026-06-21T07:19:09.6529049Z           "complete": false,
2026-06-21T07:19:09.6529148Z           "evidence": []
2026-06-21T07:19:09.6529248Z         },
2026-06-21T07:19:09.6529359Z         "impl": {
2026-06-21T07:19:09.6529477Z           "complete": true,
2026-06-21T07:19:09.6529582Z           "evidence": [
2026-06-21T07:19:09.6529687Z             {
2026-06-21T07:19:09.6529844Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6529945Z               "line": 30
2026-06-21T07:19:09.6530049Z             },
2026-06-21T07:19:09.6530154Z             {
2026-06-21T07:19:09.6530307Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6530421Z               "line": 76
2026-06-21T07:19:09.6530522Z             },
2026-06-21T07:19:09.6530626Z             {
2026-06-21T07:19:09.6530779Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6530885Z               "line": 181
2026-06-21T07:19:09.6530993Z             },
2026-06-21T07:19:09.6531079Z             {
2026-06-21T07:19:09.6531210Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6531317Z               "line": 1266
2026-06-21T07:19:09.6531423Z             }
2026-06-21T07:19:09.6531529Z           ]
2026-06-21T07:19:09.6531632Z         },
2026-06-21T07:19:09.6531735Z         "int": {
2026-06-21T07:19:09.6531846Z           "complete": true,
2026-06-21T07:19:09.6531947Z           "evidence": [
2026-06-21T07:19:09.6532046Z             {
2026-06-21T07:19:09.6532190Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6532294Z               "line": 285
2026-06-21T07:19:09.6532389Z             }
2026-06-21T07:19:09.6532495Z           ]
2026-06-21T07:19:09.6532585Z         },
2026-06-21T07:19:09.6532685Z         "unit": {
2026-06-21T07:19:09.6532791Z           "complete": true,
2026-06-21T07:19:09.6532905Z           "evidence": [
2026-06-21T07:19:09.6533111Z             {
2026-06-21T07:19:09.6533257Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6533372Z               "line": 229
2026-06-21T07:19:09.6533468Z             },
2026-06-21T07:19:09.6533576Z             {
2026-06-21T07:19:09.6533725Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6533938Z               "line": 296
2026-06-21T07:19:09.6534043Z             },
2026-06-21T07:19:09.6534143Z             {
2026-06-21T07:19:09.6534293Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6534399Z               "line": 419
2026-06-21T07:19:09.6534509Z             }
2026-06-21T07:19:09.6534598Z           ]
2026-06-21T07:19:09.6534699Z         }
2026-06-21T07:19:09.6534799Z       }
2026-06-21T07:19:09.6534894Z     },
2026-06-21T07:19:09.6534985Z     {
2026-06-21T07:19:09.6535095Z       "id": "REQ-HOST-RUN-2",
2026-06-21T07:19:09.6536934Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T07:19:09.6537057Z       "requiredStages": [
2026-06-21T07:19:09.6537165Z         "impl",
2026-06-21T07:19:09.6537270Z         "unit",
2026-06-21T07:19:09.6537376Z         "int"
2026-06-21T07:19:09.6537475Z       ],
2026-06-21T07:19:09.6537571Z       "stages": {
2026-06-21T07:19:09.6537680Z         "doc": {
2026-06-21T07:19:09.6537799Z           "complete": false,
2026-06-21T07:19:09.6537905Z           "evidence": []
2026-06-21T07:19:09.6538009Z         },
2026-06-21T07:19:09.6538109Z         "impl": {
2026-06-21T07:19:09.6538229Z           "complete": true,
2026-06-21T07:19:09.6538343Z           "evidence": [
2026-06-21T07:19:09.6538448Z             {
2026-06-21T07:19:09.6538606Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.6538705Z               "line": 182
2026-06-21T07:19:09.6538806Z             },
2026-06-21T07:19:09.6538902Z             {
2026-06-21T07:19:09.6539130Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.6539241Z               "line": 113
2026-06-21T07:19:09.6539339Z             }
2026-06-21T07:19:09.6539429Z           ]
2026-06-21T07:19:09.6539524Z         },
2026-06-21T07:19:09.6539633Z         "int": {
2026-06-21T07:19:09.6539732Z           "complete": true,
2026-06-21T07:19:09.6539851Z           "evidence": [
2026-06-21T07:19:09.6539947Z             {
2026-06-21T07:19:09.6540094Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6540205Z               "line": 572
2026-06-21T07:19:09.6540299Z             }
2026-06-21T07:19:09.6540390Z           ]
2026-06-21T07:19:09.6540491Z         },
2026-06-21T07:19:09.6540601Z         "unit": {
2026-06-21T07:19:09.6540704Z           "complete": true,
2026-06-21T07:19:09.6540801Z           "evidence": [
2026-06-21T07:19:09.6540905Z             {
2026-06-21T07:19:09.6541048Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T07:19:09.6541159Z               "line": 86
2026-06-21T07:19:09.6541258Z             }
2026-06-21T07:19:09.6541358Z           ]
2026-06-21T07:19:09.6541464Z         }
2026-06-21T07:19:09.6541562Z       }
2026-06-21T07:19:09.6541659Z     },
2026-06-21T07:19:09.6541755Z     {
2026-06-21T07:19:09.6541858Z       "id": "REQ-INFRA-1",
2026-06-21T07:19:09.6542065Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T07:19:09.6542182Z       "requiredStages": [],
2026-06-21T07:19:09.6542372Z       "stages": {
2026-06-21T07:19:09.6542479Z         "doc": {
2026-06-21T07:19:09.6542592Z           "complete": false,
2026-06-21T07:19:09.6542697Z           "evidence": []
2026-06-21T07:19:09.6542797Z         },
2026-06-21T07:19:09.6542902Z         "impl": {
2026-06-21T07:19:09.6543107Z           "complete": false,
2026-06-21T07:19:09.6543221Z           "evidence": []
2026-06-21T07:19:09.6543322Z         },
2026-06-21T07:19:09.6543422Z         "int": {
2026-06-21T07:19:09.6543536Z           "complete": false,
2026-06-21T07:19:09.6543651Z           "evidence": []
2026-06-21T07:19:09.6543746Z         },
2026-06-21T07:19:09.6543851Z         "unit": {
2026-06-21T07:19:09.6543961Z           "complete": false,
2026-06-21T07:19:09.6544071Z           "evidence": []
2026-06-21T07:19:09.6544175Z         }
2026-06-21T07:19:09.6544276Z       }
2026-06-21T07:19:09.6544371Z     },
2026-06-21T07:19:09.6544461Z     {
2026-06-21T07:19:09.6544579Z       "id": "REQ-INST-1",
2026-06-21T07:19:09.6544768Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T07:19:09.6544877Z       "requiredStages": [],
2026-06-21T07:19:09.6544992Z       "stages": {
2026-06-21T07:19:09.6545087Z         "doc": {
2026-06-21T07:19:09.6545191Z           "complete": false,
2026-06-21T07:19:09.6545297Z           "evidence": []
2026-06-21T07:19:09.6545402Z         },
2026-06-21T07:19:09.6545506Z         "impl": {
2026-06-21T07:19:09.6545622Z           "complete": false,
2026-06-21T07:19:09.6545736Z           "evidence": []
2026-06-21T07:19:09.6545830Z         },
2026-06-21T07:19:09.6545936Z         "int": {
2026-06-21T07:19:09.6546041Z           "complete": false,
2026-06-21T07:19:09.6546155Z           "evidence": []
2026-06-21T07:19:09.6546251Z         },
2026-06-21T07:19:09.6546351Z         "unit": {
2026-06-21T07:19:09.6546465Z           "complete": false,
2026-06-21T07:19:09.6546571Z           "evidence": []
2026-06-21T07:19:09.6546675Z         }
2026-06-21T07:19:09.6546775Z       }
2026-06-21T07:19:09.6546872Z     },
2026-06-21T07:19:09.6546971Z     {
2026-06-21T07:19:09.6547080Z       "id": "REQ-INST-10",
2026-06-21T07:19:09.6547318Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T07:19:09.6547427Z       "requiredStages": [
2026-06-21T07:19:09.6547537Z         "impl",
2026-06-21T07:19:09.6547635Z         "unit"
2026-06-21T07:19:09.6547739Z       ],
2026-06-21T07:19:09.6547835Z       "stages": {
2026-06-21T07:19:09.6547936Z         "doc": {
2026-06-21T07:19:09.6548044Z           "complete": false,
2026-06-21T07:19:09.6548150Z           "evidence": []
2026-06-21T07:19:09.6548260Z         },
2026-06-21T07:19:09.6548364Z         "impl": {
2026-06-21T07:19:09.6548479Z           "complete": true,
2026-06-21T07:19:09.6548589Z           "evidence": [
2026-06-21T07:19:09.6548693Z             {
2026-06-21T07:19:09.6548842Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6549032Z               "line": 648
2026-06-21T07:19:09.6549152Z             },
2026-06-21T07:19:09.6549250Z             {
2026-06-21T07:19:09.6549400Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6549500Z               "line": 725
2026-06-21T07:19:09.6549604Z             },
2026-06-21T07:19:09.6549705Z             {
2026-06-21T07:19:09.6549848Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6549961Z               "line": 13
2026-06-21T07:19:09.6550066Z             },
2026-06-21T07:19:09.6550170Z             {
2026-06-21T07:19:09.6550301Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6550411Z               "line": 67
2026-06-21T07:19:09.6550517Z             },
2026-06-21T07:19:09.6550621Z             {
2026-06-21T07:19:09.6550760Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6550865Z               "line": 18
2026-06-21T07:19:09.6550973Z             },
2026-06-21T07:19:09.6551080Z             {
2026-06-21T07:19:09.6551212Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6551418Z               "line": 444
2026-06-21T07:19:09.6551508Z             }
2026-06-21T07:19:09.6551613Z           ]
2026-06-21T07:19:09.6551714Z         },
2026-06-21T07:19:09.6551823Z         "int": {
2026-06-21T07:19:09.6551947Z           "complete": false,
2026-06-21T07:19:09.6552252Z           "evidence": []
2026-06-21T07:19:09.6552358Z         },
2026-06-21T07:19:09.6552451Z         "unit": {
2026-06-21T07:19:09.6552567Z           "complete": true,
2026-06-21T07:19:09.6552668Z           "evidence": [
2026-06-21T07:19:09.6552771Z             {
2026-06-21T07:19:09.6552914Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6553019Z               "line": 932
2026-06-21T07:19:09.6553123Z             },
2026-06-21T07:19:09.6553228Z             {
2026-06-21T07:19:09.6553377Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6553481Z               "line": 1309
2026-06-21T07:19:09.6553587Z             },
2026-06-21T07:19:09.6553691Z             {
2026-06-21T07:19:09.6553834Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6553949Z               "line": 1320
2026-06-21T07:19:09.6554049Z             },
2026-06-21T07:19:09.6554153Z             {
2026-06-21T07:19:09.6554287Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6554397Z               "line": 1336
2026-06-21T07:19:09.6554507Z             },
2026-06-21T07:19:09.6554607Z             {
2026-06-21T07:19:09.6554754Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6554860Z               "line": 1352
2026-06-21T07:19:09.6554968Z             },
2026-06-21T07:19:09.6555073Z             {
2026-06-21T07:19:09.6555221Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6555323Z               "line": 1374
2026-06-21T07:19:09.6555427Z             },
2026-06-21T07:19:09.6555533Z             {
2026-06-21T07:19:09.6555662Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6555781Z               "line": 1679
2026-06-21T07:19:09.6555891Z             },
2026-06-21T07:19:09.6555991Z             {
2026-06-21T07:19:09.6556134Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6556234Z               "line": 130
2026-06-21T07:19:09.6556343Z             },
2026-06-21T07:19:09.6556444Z             {
2026-06-21T07:19:09.6556587Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6556687Z               "line": 167
2026-06-21T07:19:09.6556793Z             },
2026-06-21T07:19:09.6556901Z             {
2026-06-21T07:19:09.6557029Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6557141Z               "line": 175
2026-06-21T07:19:09.6557240Z             },
2026-06-21T07:19:09.6557349Z             {
2026-06-21T07:19:09.6557479Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T07:19:09.6557588Z               "line": 183
2026-06-21T07:19:09.6557699Z             },
2026-06-21T07:19:09.6557804Z             {
2026-06-21T07:19:09.6557935Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6558044Z               "line": 896
2026-06-21T07:19:09.6558153Z             }
2026-06-21T07:19:09.6558262Z           ]
2026-06-21T07:19:09.6558362Z         }
2026-06-21T07:19:09.6558472Z       }
2026-06-21T07:19:09.6558567Z     },
2026-06-21T07:19:09.6558676Z     {
2026-06-21T07:19:09.6558782Z       "id": "REQ-INST-11",
2026-06-21T07:19:09.6559121Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T07:19:09.6559239Z       "requiredStages": [
2026-06-21T07:19:09.6559340Z         "impl",
2026-06-21T07:19:09.6559444Z         "unit"
2026-06-21T07:19:09.6559545Z       ],
2026-06-21T07:19:09.6559650Z       "stages": {
2026-06-21T07:19:09.6559755Z         "doc": {
2026-06-21T07:19:09.6559859Z           "complete": false,
2026-06-21T07:19:09.6559960Z           "evidence": []
2026-06-21T07:19:09.6560060Z         },
2026-06-21T07:19:09.6560270Z         "impl": {
2026-06-21T07:19:09.6560380Z           "complete": true,
2026-06-21T07:19:09.6560487Z           "evidence": [
2026-06-21T07:19:09.6560582Z             {
2026-06-21T07:19:09.6560734Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6560929Z               "line": 514
2026-06-21T07:19:09.6561034Z             },
2026-06-21T07:19:09.6561138Z             {
2026-06-21T07:19:09.6561292Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6561402Z               "line": 297
2026-06-21T07:19:09.6561495Z             },
2026-06-21T07:19:09.6561602Z             {
2026-06-21T07:19:09.6561745Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T07:19:09.6561849Z               "line": 59
2026-06-21T07:19:09.6561955Z             },
2026-06-21T07:19:09.6562059Z             {
2026-06-21T07:19:09.6562187Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6562298Z               "line": 5291
2026-06-21T07:19:09.6562407Z             },
2026-06-21T07:19:09.6562512Z             {
2026-06-21T07:19:09.6562645Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6562750Z               "line": 7137
2026-06-21T07:19:09.6562847Z             }
2026-06-21T07:19:09.6562956Z           ]
2026-06-21T07:19:09.6563060Z         },
2026-06-21T07:19:09.6563171Z         "int": {
2026-06-21T07:19:09.6563285Z           "complete": false,
2026-06-21T07:19:09.6563388Z           "evidence": []
2026-06-21T07:19:09.6563493Z         },
2026-06-21T07:19:09.6563599Z         "unit": {
2026-06-21T07:19:09.6563712Z           "complete": true,
2026-06-21T07:19:09.6563813Z           "evidence": [
2026-06-21T07:19:09.6563922Z             {
2026-06-21T07:19:09.6564074Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6564181Z               "line": 1479
2026-06-21T07:19:09.6564308Z             },
2026-06-21T07:19:09.6564403Z             {
2026-06-21T07:19:09.6564551Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6564665Z               "line": 1512
2026-06-21T07:19:09.6564771Z             },
2026-06-21T07:19:09.6564876Z             {
2026-06-21T07:19:09.6565033Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6565144Z               "line": 527
2026-06-21T07:19:09.6565247Z             },
2026-06-21T07:19:09.6565357Z             {
2026-06-21T07:19:09.6565496Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T07:19:09.6565604Z               "line": 160
2026-06-21T07:19:09.6565709Z             },
2026-06-21T07:19:09.6565804Z             {
2026-06-21T07:19:09.6565950Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T07:19:09.6566064Z               "line": 190
2026-06-21T07:19:09.6566170Z             },
2026-06-21T07:19:09.6566269Z             {
2026-06-21T07:19:09.6566408Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T07:19:09.6566522Z               "line": 225
2026-06-21T07:19:09.6566622Z             },
2026-06-21T07:19:09.6566728Z             {
2026-06-21T07:19:09.6566860Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6566975Z               "line": 7994
2026-06-21T07:19:09.6567076Z             }
2026-06-21T07:19:09.6567180Z           ]
2026-06-21T07:19:09.6567285Z         }
2026-06-21T07:19:09.6567381Z       }
2026-06-21T07:19:09.6567481Z     },
2026-06-21T07:19:09.6567581Z     {
2026-06-21T07:19:09.6567692Z       "id": "REQ-INST-12",
2026-06-21T07:19:09.6568002Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T07:19:09.6568119Z       "requiredStages": [
2026-06-21T07:19:09.6568215Z         "impl",
2026-06-21T07:19:09.6568321Z         "unit"
2026-06-21T07:19:09.6568429Z       ],
2026-06-21T07:19:09.6568533Z       "stages": {
2026-06-21T07:19:09.6568638Z         "doc": {
2026-06-21T07:19:09.6568755Z           "complete": false,
2026-06-21T07:19:09.6568859Z           "evidence": []
2026-06-21T07:19:09.6569127Z         },
2026-06-21T07:19:09.6569227Z         "impl": {
2026-06-21T07:19:09.6569342Z           "complete": true,
2026-06-21T07:19:09.6569446Z           "evidence": [
2026-06-21T07:19:09.6569542Z             {
2026-06-21T07:19:09.6569685Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6569885Z               "line": 566
2026-06-21T07:19:09.6569990Z             },
2026-06-21T07:19:09.6570095Z             {
2026-06-21T07:19:09.6570244Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6570353Z               "line": 659
2026-06-21T07:19:09.6570457Z             },
2026-06-21T07:19:09.6570554Z             {
2026-06-21T07:19:09.6570705Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6570811Z               "line": 739
2026-06-21T07:19:09.6570907Z             },
2026-06-21T07:19:09.6571010Z             {
2026-06-21T07:19:09.6571157Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6571266Z               "line": 96
2026-06-21T07:19:09.6571369Z             },
2026-06-21T07:19:09.6571474Z             {
2026-06-21T07:19:09.6571614Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6571712Z               "line": 269
2026-06-21T07:19:09.6571818Z             },
2026-06-21T07:19:09.6571923Z             {
2026-06-21T07:19:09.6572070Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6572171Z               "line": 148
2026-06-21T07:19:09.6572271Z             }
2026-06-21T07:19:09.6572380Z           ]
2026-06-21T07:19:09.6572481Z         },
2026-06-21T07:19:09.6572595Z         "int": {
2026-06-21T07:19:09.6572699Z           "complete": false,
2026-06-21T07:19:09.6572806Z           "evidence": []
2026-06-21T07:19:09.6572914Z         },
2026-06-21T07:19:09.6573014Z         "unit": {
2026-06-21T07:19:09.6573130Z           "complete": true,
2026-06-21T07:19:09.6573238Z           "evidence": [
2026-06-21T07:19:09.6573343Z             {
2026-06-21T07:19:09.6573478Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6573581Z               "line": 1554
2026-06-21T07:19:09.6573692Z             },
2026-06-21T07:19:09.6573788Z             {
2026-06-21T07:19:09.6573934Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6574043Z               "line": 1577
2026-06-21T07:19:09.6574149Z             },
2026-06-21T07:19:09.6574253Z             {
2026-06-21T07:19:09.6574401Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6574517Z               "line": 1614
2026-06-21T07:19:09.6574620Z             },
2026-06-21T07:19:09.6574726Z             {
2026-06-21T07:19:09.6574864Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6574973Z               "line": 457
2026-06-21T07:19:09.6575079Z             },
2026-06-21T07:19:09.6575188Z             {
2026-06-21T07:19:09.6575341Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6575450Z               "line": 185
2026-06-21T07:19:09.6575559Z             },
2026-06-21T07:19:09.6575656Z             {
2026-06-21T07:19:09.6575807Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6575913Z               "line": 206
2026-06-21T07:19:09.6576014Z             },
2026-06-21T07:19:09.6576122Z             {
2026-06-21T07:19:09.6576264Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6576383Z               "line": 232
2026-06-21T07:19:09.6576486Z             }
2026-06-21T07:19:09.6576591Z           ]
2026-06-21T07:19:09.6576692Z         }
2026-06-21T07:19:09.6576796Z       }
2026-06-21T07:19:09.6576901Z     },
2026-06-21T07:19:09.6577002Z     {
2026-06-21T07:19:09.6577115Z       "id": "REQ-INST-13",
2026-06-21T07:19:09.6577331Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T07:19:09.6577449Z       "requiredStages": [
2026-06-21T07:19:09.6577545Z         "impl",
2026-06-21T07:19:09.6577745Z         "unit"
2026-06-21T07:19:09.6577850Z       ],
2026-06-21T07:19:09.6577960Z       "stages": {
2026-06-21T07:19:09.6578065Z         "doc": {
2026-06-21T07:19:09.6578174Z           "complete": false,
2026-06-21T07:19:09.6578285Z           "evidence": []
2026-06-21T07:19:09.6578389Z         },
2026-06-21T07:19:09.6578557Z         "impl": {
2026-06-21T07:19:09.6578674Z           "complete": true,
2026-06-21T07:19:09.6578785Z           "evidence": [
2026-06-21T07:19:09.6578886Z             {
2026-06-21T07:19:09.6579093Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6579198Z               "line": 100
2026-06-21T07:19:09.6579301Z             },
2026-06-21T07:19:09.6579401Z             {
2026-06-21T07:19:09.6579554Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6579654Z               "line": 171
2026-06-21T07:19:09.6579758Z             }
2026-06-21T07:19:09.6579850Z           ]
2026-06-21T07:19:09.6579950Z         },
2026-06-21T07:19:09.6580063Z         "int": {
2026-06-21T07:19:09.6580179Z           "complete": false,
2026-06-21T07:19:09.6580288Z           "evidence": []
2026-06-21T07:19:09.6580388Z         },
2026-06-21T07:19:09.6580489Z         "unit": {
2026-06-21T07:19:09.6580598Z           "complete": true,
2026-06-21T07:19:09.6580702Z           "evidence": [
2026-06-21T07:19:09.6580809Z             {
2026-06-21T07:19:09.6580960Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6581075Z               "line": 261
2026-06-21T07:19:09.6581176Z             },
2026-06-21T07:19:09.6581275Z             {
2026-06-21T07:19:09.6581414Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T07:19:09.6581528Z               "line": 279
2026-06-21T07:19:09.6581631Z             }
2026-06-21T07:19:09.6581736Z           ]
2026-06-21T07:19:09.6581840Z         }
2026-06-21T07:19:09.6581948Z       }
2026-06-21T07:19:09.6582054Z     },
2026-06-21T07:19:09.6582150Z     {
2026-06-21T07:19:09.6582263Z       "id": "REQ-INST-14",
2026-06-21T07:19:09.6582673Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T07:19:09.6582798Z       "requiredStages": [
2026-06-21T07:19:09.6582897Z         "doc",
2026-06-21T07:19:09.6583008Z         "impl",
2026-06-21T07:19:09.6583113Z         "unit"
2026-06-21T07:19:09.6583217Z       ],
2026-06-21T07:19:09.6583322Z       "stages": {
2026-06-21T07:19:09.6583427Z         "doc": {
2026-06-21T07:19:09.6583537Z           "complete": true,
2026-06-21T07:19:09.6583642Z           "evidence": [
2026-06-21T07:19:09.6583747Z             {
2026-06-21T07:19:09.6583870Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6583986Z               "line": 588
2026-06-21T07:19:09.6584085Z             },
2026-06-21T07:19:09.6584185Z             {
2026-06-21T07:19:09.6584315Z               "path": "docs/STORAGE.md",
2026-06-21T07:19:09.6584423Z               "line": 49
2026-06-21T07:19:09.6584527Z             }
2026-06-21T07:19:09.6584637Z           ]
2026-06-21T07:19:09.6584738Z         },
2026-06-21T07:19:09.6584846Z         "impl": {
2026-06-21T07:19:09.6584957Z           "complete": true,
2026-06-21T07:19:09.6585067Z           "evidence": [
2026-06-21T07:19:09.6585170Z             {
2026-06-21T07:19:09.6585334Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6585443Z               "line": 410
2026-06-21T07:19:09.6585543Z             },
2026-06-21T07:19:09.6585644Z             {
2026-06-21T07:19:09.6585790Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6585902Z               "line": 367
2026-06-21T07:19:09.6586001Z             },
2026-06-21T07:19:09.6586101Z             {
2026-06-21T07:19:09.6586240Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6586349Z               "line": 293
2026-06-21T07:19:09.6589335Z             },
2026-06-21T07:19:09.6589465Z             {
2026-06-21T07:19:09.6589611Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6589862Z               "line": 1577
2026-06-21T07:19:09.6589971Z             }
2026-06-21T07:19:09.6590071Z           ]
2026-06-21T07:19:09.6590167Z         },
2026-06-21T07:19:09.6590271Z         "int": {
2026-06-21T07:19:09.6590386Z           "complete": false,
2026-06-21T07:19:09.6590585Z           "evidence": []
2026-06-21T07:19:09.6590691Z         },
2026-06-21T07:19:09.6590791Z         "unit": {
2026-06-21T07:19:09.6590905Z           "complete": true,
2026-06-21T07:19:09.6591006Z           "evidence": [
2026-06-21T07:19:09.6591110Z             {
2026-06-21T07:19:09.6591277Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6591397Z               "line": 1163
2026-06-21T07:19:09.6591501Z             },
2026-06-21T07:19:09.6591592Z             {
2026-06-21T07:19:09.6591750Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6591859Z               "line": 944
2026-06-21T07:19:09.6591965Z             },
2026-06-21T07:19:09.6592069Z             {
2026-06-21T07:19:09.6592224Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6592325Z               "line": 1205
2026-06-21T07:19:09.6592428Z             },
2026-06-21T07:19:09.6592532Z             {
2026-06-21T07:19:09.6592681Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6592790Z               "line": 659
2026-06-21T07:19:09.6592895Z             },
2026-06-21T07:19:09.6592996Z             {
2026-06-21T07:19:09.6593124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6593219Z               "line": 8070
2026-06-21T07:19:09.6593324Z             }
2026-06-21T07:19:09.6593425Z           ]
2026-06-21T07:19:09.6593529Z         }
2026-06-21T07:19:09.6593635Z       }
2026-06-21T07:19:09.6593729Z     },
2026-06-21T07:19:09.6593834Z     {
2026-06-21T07:19:09.6593940Z       "id": "REQ-INST-15",
2026-06-21T07:19:09.6594711Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T07:19:09.6594822Z       "requiredStages": [
2026-06-21T07:19:09.6594932Z         "doc",
2026-06-21T07:19:09.6595045Z         "impl",
2026-06-21T07:19:09.6595149Z         "unit"
2026-06-21T07:19:09.6595251Z       ],
2026-06-21T07:19:09.6595360Z       "stages": {
2026-06-21T07:19:09.6595464Z         "doc": {
2026-06-21T07:19:09.6595575Z           "complete": true,
2026-06-21T07:19:09.6595688Z           "evidence": [
2026-06-21T07:19:09.6595793Z             {
2026-06-21T07:19:09.6595998Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T07:19:09.6596112Z               "line": 3
2026-06-21T07:19:09.6596213Z             }
2026-06-21T07:19:09.6596318Z           ]
2026-06-21T07:19:09.6596418Z         },
2026-06-21T07:19:09.6596528Z         "impl": {
2026-06-21T07:19:09.6596652Z           "complete": true,
2026-06-21T07:19:09.6596747Z           "evidence": [
2026-06-21T07:19:09.6596852Z             {
2026-06-21T07:19:09.6596999Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6597111Z               "line": 353
2026-06-21T07:19:09.6597214Z             },
2026-06-21T07:19:09.6597323Z             {
2026-06-21T07:19:09.6597475Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6597574Z               "line": 60
2026-06-21T07:19:09.6597678Z             },
2026-06-21T07:19:09.6597783Z             {
2026-06-21T07:19:09.6597940Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6598060Z               "line": 368
2026-06-21T07:19:09.6598160Z             },
2026-06-21T07:19:09.6598264Z             {
2026-06-21T07:19:09.6598418Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6598518Z               "line": 417
2026-06-21T07:19:09.6598622Z             },
2026-06-21T07:19:09.6598803Z             {
2026-06-21T07:19:09.6599033Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6599132Z               "line": 19
2026-06-21T07:19:09.6599237Z             },
2026-06-21T07:19:09.6599338Z             {
2026-06-21T07:19:09.6599480Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6599682Z               "line": 70
2026-06-21T07:19:09.6599785Z             },
2026-06-21T07:19:09.6599890Z             {
2026-06-21T07:19:09.6600016Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6600119Z               "line": 96
2026-06-21T07:19:09.6600218Z             },
2026-06-21T07:19:09.6600323Z             {
2026-06-21T07:19:09.6600455Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6600564Z               "line": 121
2026-06-21T07:19:09.6600665Z             },
2026-06-21T07:19:09.6600770Z             {
2026-06-21T07:19:09.6600897Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6600999Z               "line": 172
2026-06-21T07:19:09.6601099Z             },
2026-06-21T07:19:09.6601203Z             {
2026-06-21T07:19:09.6601342Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6601455Z               "line": 178
2026-06-21T07:19:09.6601561Z             },
2026-06-21T07:19:09.6601657Z             {
2026-06-21T07:19:09.6601789Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6601905Z               "line": 1469
2026-06-21T07:19:09.6601995Z             }
2026-06-21T07:19:09.6602118Z           ]
2026-06-21T07:19:09.6602220Z         },
2026-06-21T07:19:09.6602324Z         "int": {
2026-06-21T07:19:09.6602443Z           "complete": false,
2026-06-21T07:19:09.6602549Z           "evidence": []
2026-06-21T07:19:09.6602657Z         },
2026-06-21T07:19:09.6602761Z         "unit": {
2026-06-21T07:19:09.6602876Z           "complete": true,
2026-06-21T07:19:09.6602984Z           "evidence": [
2026-06-21T07:19:09.6603088Z             {
2026-06-21T07:19:09.6603241Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6603350Z               "line": 577
2026-06-21T07:19:09.6603445Z             },
2026-06-21T07:19:09.6603546Z             {
2026-06-21T07:19:09.6603703Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.6603808Z               "line": 638
2026-06-21T07:19:09.6603899Z             },
2026-06-21T07:19:09.6604003Z             {
2026-06-21T07:19:09.6604143Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6604247Z               "line": 213
2026-06-21T07:19:09.6604346Z             },
2026-06-21T07:19:09.6604447Z             {
2026-06-21T07:19:09.6604585Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6604695Z               "line": 249
2026-06-21T07:19:09.6604796Z             },
2026-06-21T07:19:09.6604890Z             {
2026-06-21T07:19:09.6605038Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6605149Z               "line": 262
2026-06-21T07:19:09.6605248Z             },
2026-06-21T07:19:09.6605358Z             {
2026-06-21T07:19:09.6605487Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T07:19:09.6605600Z               "line": 338
2026-06-21T07:19:09.6605700Z             },
2026-06-21T07:19:09.6605811Z             {
2026-06-21T07:19:09.6605948Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6606058Z               "line": 690
2026-06-21T07:19:09.6606154Z             },
2026-06-21T07:19:09.6606253Z             {
2026-06-21T07:19:09.6606383Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6606492Z               "line": 8007
2026-06-21T07:19:09.6606592Z             },
2026-06-21T07:19:09.6606697Z             {
2026-06-21T07:19:09.6606826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6606930Z               "line": 9837
2026-06-21T07:19:09.6607032Z             }
2026-06-21T07:19:09.6607131Z           ]
2026-06-21T07:19:09.6607347Z         }
2026-06-21T07:19:09.6607446Z       }
2026-06-21T07:19:09.6607545Z     },
2026-06-21T07:19:09.6607641Z     {
2026-06-21T07:19:09.6607756Z       "id": "REQ-INST-2",
2026-06-21T07:19:09.6607907Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T07:19:09.6608026Z       "requiredStages": [
2026-06-21T07:19:09.6608209Z         "impl",
2026-06-21T07:19:09.6608310Z         "unit"
2026-06-21T07:19:09.6608411Z       ],
2026-06-21T07:19:09.6608509Z       "stages": {
2026-06-21T07:19:09.6608620Z         "doc": {
2026-06-21T07:19:09.6608729Z           "complete": false,
2026-06-21T07:19:09.6608843Z           "evidence": []
2026-06-21T07:19:09.6609035Z         },
2026-06-21T07:19:09.6609139Z         "impl": {
2026-06-21T07:19:09.6609250Z           "complete": true,
2026-06-21T07:19:09.6609359Z           "evidence": [
2026-06-21T07:19:09.6609473Z             {
2026-06-21T07:19:09.6609612Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6609716Z               "line": 108
2026-06-21T07:19:09.6609821Z             },
2026-06-21T07:19:09.6609927Z             {
2026-06-21T07:19:09.6610054Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.6610165Z               "line": 28
2026-06-21T07:19:09.6610266Z             },
2026-06-21T07:19:09.6610374Z             {
2026-06-21T07:19:09.6610514Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.6610619Z               "line": 74
2026-06-21T07:19:09.6610721Z             },
2026-06-21T07:19:09.6610821Z             {
2026-06-21T07:19:09.6610954Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.6611057Z               "line": 96
2026-06-21T07:19:09.6611158Z             },
2026-06-21T07:19:09.6611263Z             {
2026-06-21T07:19:09.6611391Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.6611492Z               "line": 86
2026-06-21T07:19:09.6611592Z             },
2026-06-21T07:19:09.6611687Z             {
2026-06-21T07:19:09.6611826Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T07:19:09.6611935Z               "line": 118
2026-06-21T07:19:09.6612039Z             }
2026-06-21T07:19:09.6612131Z           ]
2026-06-21T07:19:09.6612231Z         },
2026-06-21T07:19:09.6612331Z         "int": {
2026-06-21T07:19:09.6612441Z           "complete": false,
2026-06-21T07:19:09.6612546Z           "evidence": []
2026-06-21T07:19:09.6612646Z         },
2026-06-21T07:19:09.6612741Z         "unit": {
2026-06-21T07:19:09.6612847Z           "complete": true,
2026-06-21T07:19:09.6612955Z           "evidence": [
2026-06-21T07:19:09.6613056Z             {
2026-06-21T07:19:09.6613194Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T07:19:09.6613303Z               "line": 250
2026-06-21T07:19:09.6613407Z             },
2026-06-21T07:19:09.6613512Z             {
2026-06-21T07:19:09.6613653Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.6613763Z               "line": 280
2026-06-21T07:19:09.6613868Z             }
2026-06-21T07:19:09.6613967Z           ]
2026-06-21T07:19:09.6614073Z         }
2026-06-21T07:19:09.6614168Z       }
2026-06-21T07:19:09.6614258Z     },
2026-06-21T07:19:09.6614359Z     {
2026-06-21T07:19:09.6614473Z       "id": "REQ-INST-3",
2026-06-21T07:19:09.6614654Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T07:19:09.6614774Z       "requiredStages": [
2026-06-21T07:19:09.6614869Z         "doc",
2026-06-21T07:19:09.6614973Z         "impl",
2026-06-21T07:19:09.6615075Z         "unit"
2026-06-21T07:19:09.6615170Z       ],
2026-06-21T07:19:09.6615279Z       "stages": {
2026-06-21T07:19:09.6615385Z         "doc": {
2026-06-21T07:19:09.6615493Z           "complete": true,
2026-06-21T07:19:09.6615589Z           "evidence": [
2026-06-21T07:19:09.6615695Z             {
2026-06-21T07:19:09.6615832Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T07:19:09.6615928Z               "line": 3
2026-06-21T07:19:09.6616034Z             }
2026-06-21T07:19:09.6616240Z           ]
2026-06-21T07:19:09.6616337Z         },
2026-06-21T07:19:09.6616446Z         "impl": {
2026-06-21T07:19:09.6616555Z           "complete": true,
2026-06-21T07:19:09.6616671Z           "evidence": [
2026-06-21T07:19:09.6616771Z             {
2026-06-21T07:19:09.6616914Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6617114Z               "line": 59
2026-06-21T07:19:09.6617214Z             },
2026-06-21T07:19:09.6617324Z             {
2026-06-21T07:19:09.6617466Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.6617567Z               "line": 480
2026-06-21T07:19:09.6617672Z             },
2026-06-21T07:19:09.6617776Z             {
2026-06-21T07:19:09.6617921Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6618020Z               "line": 254
2026-06-21T07:19:09.6618129Z             },
2026-06-21T07:19:09.6618231Z             {
2026-06-21T07:19:09.6618382Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6618490Z               "line": 384
2026-06-21T07:19:09.6618595Z             },
2026-06-21T07:19:09.6618698Z             {
2026-06-21T07:19:09.6618831Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6618938Z               "line": 418
2026-06-21T07:19:09.6619122Z             },
2026-06-21T07:19:09.6619223Z             {
2026-06-21T07:19:09.6619370Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T07:19:09.6619475Z               "line": 74
2026-06-21T07:19:09.6619576Z             },
2026-06-21T07:19:09.6619671Z             {
2026-06-21T07:19:09.6619815Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6619919Z               "line": 234
2026-06-21T07:19:09.6620019Z             },
2026-06-21T07:19:09.6620119Z             {
2026-06-21T07:19:09.6620267Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6620376Z               "line": 396
2026-06-21T07:19:09.6620483Z             },
2026-06-21T07:19:09.6620587Z             {
2026-06-21T07:19:09.6620730Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6620840Z               "line": 45
2026-06-21T07:19:09.6620943Z             },
2026-06-21T07:19:09.6621040Z             {
2026-06-21T07:19:09.6621188Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6621286Z               "line": 114
2026-06-21T07:19:09.6621396Z             },
2026-06-21T07:19:09.6621496Z             {
2026-06-21T07:19:09.6621631Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6621742Z               "line": 152
2026-06-21T07:19:09.6621842Z             },
2026-06-21T07:19:09.6621942Z             {
2026-06-21T07:19:09.6622081Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6622186Z               "line": 168
2026-06-21T07:19:09.6622289Z             },
2026-06-21T07:19:09.6622382Z             {
2026-06-21T07:19:09.6622525Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6622633Z               "line": 178
2026-06-21T07:19:09.6622734Z             },
2026-06-21T07:19:09.6622838Z             {
2026-06-21T07:19:09.6622977Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6623087Z               "line": 210
2026-06-21T07:19:09.6623186Z             },
2026-06-21T07:19:09.6623287Z             {
2026-06-21T07:19:09.6623412Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6623520Z               "line": 287
2026-06-21T07:19:09.6623626Z             },
2026-06-21T07:19:09.6623726Z             {
2026-06-21T07:19:09.6623863Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6623968Z               "line": 311
2026-06-21T07:19:09.6624072Z             },
2026-06-21T07:19:09.6624170Z             {
2026-06-21T07:19:09.6624313Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6624410Z               "line": 389
2026-06-21T07:19:09.6624619Z             },
2026-06-21T07:19:09.6624719Z             {
2026-06-21T07:19:09.6624866Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6624977Z               "line": 438
2026-06-21T07:19:09.6625082Z             },
2026-06-21T07:19:09.6625181Z             {
2026-06-21T07:19:09.6625425Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T07:19:09.6625543Z               "line": 37
2026-06-21T07:19:09.6625640Z             },
2026-06-21T07:19:09.6625744Z             {
2026-06-21T07:19:09.6625892Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6626001Z               "line": 62
2026-06-21T07:19:09.6626110Z             },
2026-06-21T07:19:09.6626207Z             {
2026-06-21T07:19:09.6626349Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6626464Z               "line": 279
2026-06-21T07:19:09.6626565Z             },
2026-06-21T07:19:09.6626673Z             {
2026-06-21T07:19:09.6626805Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6626916Z               "line": 1848
2026-06-21T07:19:09.6627006Z             }
2026-06-21T07:19:09.6627111Z           ]
2026-06-21T07:19:09.6627217Z         },
2026-06-21T07:19:09.6627321Z         "int": {
2026-06-21T07:19:09.6627439Z           "complete": false,
2026-06-21T07:19:09.6627551Z           "evidence": []
2026-06-21T07:19:09.6627660Z         },
2026-06-21T07:19:09.6627759Z         "unit": {
2026-06-21T07:19:09.6627870Z           "complete": true,
2026-06-21T07:19:09.6627974Z           "evidence": [
2026-06-21T07:19:09.6628079Z             {
2026-06-21T07:19:09.6628232Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.6628332Z               "line": 360
2026-06-21T07:19:09.6628438Z             },
2026-06-21T07:19:09.6628537Z             {
2026-06-21T07:19:09.6628685Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6628791Z               "line": 837
2026-06-21T07:19:09.6628899Z             },
2026-06-21T07:19:09.6629093Z             {
2026-06-21T07:19:09.6629235Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6629343Z               "line": 894
2026-06-21T07:19:09.6629445Z             },
2026-06-21T07:19:09.6629545Z             {
2026-06-21T07:19:09.6629702Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6629812Z               "line": 889
2026-06-21T07:19:09.6629912Z             },
2026-06-21T07:19:09.6630016Z             {
2026-06-21T07:19:09.6630165Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6630264Z               "line": 1014
2026-06-21T07:19:09.6630365Z             },
2026-06-21T07:19:09.6630475Z             {
2026-06-21T07:19:09.6630626Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6630737Z               "line": 1264
2026-06-21T07:19:09.6630832Z             },
2026-06-21T07:19:09.6630927Z             {
2026-06-21T07:19:09.6631076Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6631189Z               "line": 1405
2026-06-21T07:19:09.6631280Z             },
2026-06-21T07:19:09.6631386Z             {
2026-06-21T07:19:09.6631523Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6631634Z               "line": 449
2026-06-21T07:19:09.6631743Z             },
2026-06-21T07:19:09.6631842Z             {
2026-06-21T07:19:09.6631990Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6632098Z               "line": 485
2026-06-21T07:19:09.6632201Z             },
2026-06-21T07:19:09.6632302Z             {
2026-06-21T07:19:09.6632431Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6632549Z               "line": 540
2026-06-21T07:19:09.6632641Z             },
2026-06-21T07:19:09.6632731Z             {
2026-06-21T07:19:09.6632878Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6632989Z               "line": 697
2026-06-21T07:19:09.6633198Z             },
2026-06-21T07:19:09.6633299Z             {
2026-06-21T07:19:09.6633442Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6633546Z               "line": 931
2026-06-21T07:19:09.6633642Z             },
2026-06-21T07:19:09.6633741Z             {
2026-06-21T07:19:09.6633981Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6634090Z               "line": 945
2026-06-21T07:19:09.6634191Z             },
2026-06-21T07:19:09.6634296Z             {
2026-06-21T07:19:09.6634442Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6634537Z               "line": 1290
2026-06-21T07:19:09.6634651Z             },
2026-06-21T07:19:09.6634749Z             {
2026-06-21T07:19:09.6634897Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.6634994Z               "line": 609
2026-06-21T07:19:09.6635102Z             },
2026-06-21T07:19:09.6635203Z             {
2026-06-21T07:19:09.6635337Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6635445Z               "line": 8031
2026-06-21T07:19:09.6635542Z             }
2026-06-21T07:19:09.6635651Z           ]
2026-06-21T07:19:09.6635750Z         }
2026-06-21T07:19:09.6635852Z       }
2026-06-21T07:19:09.6635955Z     },
2026-06-21T07:19:09.6636060Z     {
2026-06-21T07:19:09.6636171Z       "id": "REQ-INST-4",
2026-06-21T07:19:09.6636375Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T07:19:09.6636496Z       "requiredStages": [
2026-06-21T07:19:09.6636599Z         "impl",
2026-06-21T07:19:09.6636704Z         "unit"
2026-06-21T07:19:09.6636811Z       ],
2026-06-21T07:19:09.6636909Z       "stages": {
2026-06-21T07:19:09.6637009Z         "doc": {
2026-06-21T07:19:09.6637116Z           "complete": false,
2026-06-21T07:19:09.6637224Z           "evidence": []
2026-06-21T07:19:09.6637323Z         },
2026-06-21T07:19:09.6637428Z         "impl": {
2026-06-21T07:19:09.6637553Z           "complete": true,
2026-06-21T07:19:09.6637657Z           "evidence": [
2026-06-21T07:19:09.6637757Z             {
2026-06-21T07:19:09.6637905Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6638009Z               "line": 385
2026-06-21T07:19:09.6638111Z             },
2026-06-21T07:19:09.6638211Z             {
2026-06-21T07:19:09.6638353Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6638458Z               "line": 202
2026-06-21T07:19:09.6638567Z             },
2026-06-21T07:19:09.6638668Z             {
2026-06-21T07:19:09.6638815Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6638920Z               "line": 234
2026-06-21T07:19:09.6639102Z             },
2026-06-21T07:19:09.6639206Z             {
2026-06-21T07:19:09.6639346Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6639454Z               "line": 274
2026-06-21T07:19:09.6639554Z             }
2026-06-21T07:19:09.6639658Z           ]
2026-06-21T07:19:09.6639762Z         },
2026-06-21T07:19:09.6639866Z         "int": {
2026-06-21T07:19:09.6639990Z           "complete": false,
2026-06-21T07:19:09.6640091Z           "evidence": []
2026-06-21T07:19:09.6640195Z         },
2026-06-21T07:19:09.6640300Z         "unit": {
2026-06-21T07:19:09.6640415Z           "complete": true,
2026-06-21T07:19:09.6640519Z           "evidence": [
2026-06-21T07:19:09.6640620Z             {
2026-06-21T07:19:09.6640767Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6640876Z               "line": 889
2026-06-21T07:19:09.6640973Z             },
2026-06-21T07:19:09.6641063Z             {
2026-06-21T07:19:09.6641206Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6641307Z               "line": 561
2026-06-21T07:19:09.6641416Z             },
2026-06-21T07:19:09.6641520Z             {
2026-06-21T07:19:09.6641659Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6641764Z               "line": 668
2026-06-21T07:19:09.6641965Z             },
2026-06-21T07:19:09.6642069Z             {
2026-06-21T07:19:09.6642213Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6642322Z               "line": 750
2026-06-21T07:19:09.6642426Z             }
2026-06-21T07:19:09.6642616Z           ]
2026-06-21T07:19:09.6642705Z         }
2026-06-21T07:19:09.6642804Z       }
2026-06-21T07:19:09.6642910Z     },
2026-06-21T07:19:09.6643010Z     {
2026-06-21T07:19:09.6643114Z       "id": "REQ-INST-5",
2026-06-21T07:19:09.6643334Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T07:19:09.6643443Z       "requiredStages": [
2026-06-21T07:19:09.6643554Z         "impl",
2026-06-21T07:19:09.6643654Z         "unit",
2026-06-21T07:19:09.6643753Z         "int"
2026-06-21T07:19:09.6643850Z       ],
2026-06-21T07:19:09.6643968Z       "stages": {
2026-06-21T07:19:09.6644078Z         "doc": {
2026-06-21T07:19:09.6644188Z           "complete": false,
2026-06-21T07:19:09.6644297Z           "evidence": []
2026-06-21T07:19:09.6644402Z         },
2026-06-21T07:19:09.6644508Z         "impl": {
2026-06-21T07:19:09.6644621Z           "complete": true,
2026-06-21T07:19:09.6644727Z           "evidence": [
2026-06-21T07:19:09.6644832Z             {
2026-06-21T07:19:09.6644987Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T07:19:09.6645097Z               "line": 85
2026-06-21T07:19:09.6645201Z             },
2026-06-21T07:19:09.6645304Z             {
2026-06-21T07:19:09.6645443Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6645544Z               "line": 68
2026-06-21T07:19:09.6645647Z             },
2026-06-21T07:19:09.6645749Z             {
2026-06-21T07:19:09.6645892Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6645996Z               "line": 99
2026-06-21T07:19:09.6646102Z             },
2026-06-21T07:19:09.6646206Z             {
2026-06-21T07:19:09.6646344Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6646464Z               "line": 183
2026-06-21T07:19:09.6646555Z             },
2026-06-21T07:19:09.6646654Z             {
2026-06-21T07:19:09.6646783Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6646893Z               "line": 314
2026-06-21T07:19:09.6646998Z             }
2026-06-21T07:19:09.6647094Z           ]
2026-06-21T07:19:09.6647193Z         },
2026-06-21T07:19:09.6647298Z         "int": {
2026-06-21T07:19:09.6647409Z           "complete": true,
2026-06-21T07:19:09.6647512Z           "evidence": [
2026-06-21T07:19:09.6647613Z             {
2026-06-21T07:19:09.6647770Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.6647879Z               "line": 156
2026-06-21T07:19:09.6647974Z             },
2026-06-21T07:19:09.6648080Z             {
2026-06-21T07:19:09.6648226Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T07:19:09.6648322Z               "line": 145
2026-06-21T07:19:09.6648433Z             },
2026-06-21T07:19:09.6648536Z             {
2026-06-21T07:19:09.6648685Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6648790Z               "line": 707
2026-06-21T07:19:09.6648894Z             },
2026-06-21T07:19:09.6649075Z             {
2026-06-21T07:19:09.6649223Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6649329Z               "line": 1069
2026-06-21T07:19:09.6649433Z             }
2026-06-21T07:19:09.6649533Z           ]
2026-06-21T07:19:09.6649644Z         },
2026-06-21T07:19:09.6649747Z         "unit": {
2026-06-21T07:19:09.6649867Z           "complete": true,
2026-06-21T07:19:09.6649964Z           "evidence": [
2026-06-21T07:19:09.6650071Z             {
2026-06-21T07:19:09.6650214Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6650313Z               "line": 552
2026-06-21T07:19:09.6650412Z             },
2026-06-21T07:19:09.6650507Z             {
2026-06-21T07:19:09.6650642Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6650846Z               "line": 595
2026-06-21T07:19:09.6650942Z             },
2026-06-21T07:19:09.6651050Z             {
2026-06-21T07:19:09.6651190Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.6651290Z               "line": 219
2026-06-21T07:19:09.6651481Z             }
2026-06-21T07:19:09.6651580Z           ]
2026-06-21T07:19:09.6651685Z         }
2026-06-21T07:19:09.6651790Z       }
2026-06-21T07:19:09.6651895Z     },
2026-06-21T07:19:09.6651995Z     {
2026-06-21T07:19:09.6652110Z       "id": "REQ-INST-6",
2026-06-21T07:19:09.6652324Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T07:19:09.6652444Z       "requiredStages": [
2026-06-21T07:19:09.6652544Z         "impl",
2026-06-21T07:19:09.6652653Z         "unit",
2026-06-21T07:19:09.6652759Z         "int"
2026-06-21T07:19:09.6652854Z       ],
2026-06-21T07:19:09.6652962Z       "stages": {
2026-06-21T07:19:09.6653067Z         "doc": {
2026-06-21T07:19:09.6653185Z           "complete": true,
2026-06-21T07:19:09.6653294Z           "evidence": [
2026-06-21T07:19:09.6653394Z             {
2026-06-21T07:19:09.6653523Z               "path": "docs/DEFERRED.md",
2026-06-21T07:19:09.6653632Z               "line": 13
2026-06-21T07:19:09.6653727Z             }
2026-06-21T07:19:09.6653819Z           ]
2026-06-21T07:19:09.6653927Z         },
2026-06-21T07:19:09.6654033Z         "impl": {
2026-06-21T07:19:09.6654138Z           "complete": true,
2026-06-21T07:19:09.6654251Z           "evidence": [
2026-06-21T07:19:09.6654357Z             {
2026-06-21T07:19:09.6654500Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.6654609Z               "line": 391
2026-06-21T07:19:09.6654716Z             },
2026-06-21T07:19:09.6654819Z             {
2026-06-21T07:19:09.6654967Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T07:19:09.6655073Z               "line": 27
2026-06-21T07:19:09.6655181Z             },
2026-06-21T07:19:09.6655287Z             {
2026-06-21T07:19:09.6655430Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T07:19:09.6655543Z               "line": 73
2026-06-21T07:19:09.6655633Z             },
2026-06-21T07:19:09.6655738Z             {
2026-06-21T07:19:09.6655888Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T07:19:09.6655994Z               "line": 182
2026-06-21T07:19:09.6656100Z             },
2026-06-21T07:19:09.6656203Z             {
2026-06-21T07:19:09.6656347Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6656443Z               "line": 426
2026-06-21T07:19:09.6656551Z             },
2026-06-21T07:19:09.6656657Z             {
2026-06-21T07:19:09.6656800Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T07:19:09.6656909Z               "line": 31
2026-06-21T07:19:09.6657010Z             },
2026-06-21T07:19:09.6657110Z             {
2026-06-21T07:19:09.6657253Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.6657367Z               "line": 202
2026-06-21T07:19:09.6657472Z             },
2026-06-21T07:19:09.6657568Z             {
2026-06-21T07:19:09.6657701Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.6657801Z               "line": 83
2026-06-21T07:19:09.6657912Z             },
2026-06-21T07:19:09.6658011Z             {
2026-06-21T07:19:09.6658144Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6658260Z               "line": 1849
2026-06-21T07:19:09.6658358Z             },
2026-06-21T07:19:09.6658462Z             {
2026-06-21T07:19:09.6658597Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6658701Z               "line": 179
2026-06-21T07:19:09.6658806Z             },
2026-06-21T07:19:09.6658897Z             {
2026-06-21T07:19:09.6659120Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6659222Z               "line": 215
2026-06-21T07:19:09.6659327Z             }
2026-06-21T07:19:09.6659531Z           ]
2026-06-21T07:19:09.6659640Z         },
2026-06-21T07:19:09.6659740Z         "int": {
2026-06-21T07:19:09.6659856Z           "complete": true,
2026-06-21T07:19:09.6659974Z           "evidence": [
2026-06-21T07:19:09.6660069Z             {
2026-06-21T07:19:09.6660218Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6660418Z               "line": 721
2026-06-21T07:19:09.6660514Z             },
2026-06-21T07:19:09.6660617Z             {
2026-06-21T07:19:09.6660765Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6660869Z               "line": 1114
2026-06-21T07:19:09.6660972Z             },
2026-06-21T07:19:09.6661077Z             {
2026-06-21T07:19:09.6661207Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.6661315Z               "line": 726
2026-06-21T07:19:09.6661416Z             }
2026-06-21T07:19:09.6661502Z           ]
2026-06-21T07:19:09.6661606Z         },
2026-06-21T07:19:09.6661706Z         "unit": {
2026-06-21T07:19:09.6661812Z           "complete": true,
2026-06-21T07:19:09.6661916Z           "evidence": [
2026-06-21T07:19:09.6662021Z             {
2026-06-21T07:19:09.6662169Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.6662273Z               "line": 661
2026-06-21T07:19:09.6662384Z             },
2026-06-21T07:19:09.6662483Z             {
2026-06-21T07:19:09.6662627Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.6662728Z               "line": 899
2026-06-21T07:19:09.6662827Z             },
2026-06-21T07:19:09.6662927Z             {
2026-06-21T07:19:09.6663067Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T07:19:09.6663179Z               "line": 66
2026-06-21T07:19:09.6663276Z             },
2026-06-21T07:19:09.6663382Z             {
2026-06-21T07:19:09.6663513Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.6663617Z               "line": 297
2026-06-21T07:19:09.6663732Z             },
2026-06-21T07:19:09.6663834Z             {
2026-06-21T07:19:09.6663973Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.6664078Z               "line": 203
2026-06-21T07:19:09.6664182Z             }
2026-06-21T07:19:09.6664283Z           ]
2026-06-21T07:19:09.6664393Z         }
2026-06-21T07:19:09.6664492Z       }
2026-06-21T07:19:09.6664593Z     },
2026-06-21T07:19:09.6664693Z     {
2026-06-21T07:19:09.6667504Z       "id": "REQ-INST-7",
2026-06-21T07:19:09.6667712Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T07:19:09.6667833Z       "requiredStages": [
2026-06-21T07:19:09.6667932Z         "impl",
2026-06-21T07:19:09.6668042Z         "unit",
2026-06-21T07:19:09.6668143Z         "int"
2026-06-21T07:19:09.6668242Z       ],
2026-06-21T07:19:09.6668351Z       "stages": {
2026-06-21T07:19:09.6668458Z         "doc": {
2026-06-21T07:19:09.6668571Z           "complete": false,
2026-06-21T07:19:09.6668681Z           "evidence": []
2026-06-21T07:19:09.6668792Z         },
2026-06-21T07:19:09.6668895Z         "impl": {
2026-06-21T07:19:09.6669099Z           "complete": true,
2026-06-21T07:19:09.6669200Z           "evidence": [
2026-06-21T07:19:09.6669304Z             {
2026-06-21T07:19:09.6669452Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.6669558Z               "line": 436
2026-06-21T07:19:09.6669656Z             },
2026-06-21T07:19:09.6669753Z             {
2026-06-21T07:19:09.6669919Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6670019Z               "line": 27
2026-06-21T07:19:09.6670134Z             },
2026-06-21T07:19:09.6670234Z             {
2026-06-21T07:19:09.6670397Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6670506Z               "line": 207
2026-06-21T07:19:09.6670610Z             },
2026-06-21T07:19:09.6670707Z             {
2026-06-21T07:19:09.6670858Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6671107Z               "line": 344
2026-06-21T07:19:09.6671210Z             },
2026-06-21T07:19:09.6671315Z             {
2026-06-21T07:19:09.6671462Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T07:19:09.6671570Z               "line": 59
2026-06-21T07:19:09.6671671Z             },
2026-06-21T07:19:09.6671880Z             {
2026-06-21T07:19:09.6672029Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6672138Z               "line": 41
2026-06-21T07:19:09.6672242Z             },
2026-06-21T07:19:09.6672344Z             {
2026-06-21T07:19:09.6672490Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6672591Z               "line": 27
2026-06-21T07:19:09.6672696Z             },
2026-06-21T07:19:09.6672791Z             {
2026-06-21T07:19:09.6672930Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6673039Z               "line": 119
2026-06-21T07:19:09.6673144Z             },
2026-06-21T07:19:09.6673245Z             {
2026-06-21T07:19:09.6673396Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6673501Z               "line": 134
2026-06-21T07:19:09.6673598Z             },
2026-06-21T07:19:09.6673697Z             {
2026-06-21T07:19:09.6673850Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T07:19:09.6673966Z               "line": 139
2026-06-21T07:19:09.6674068Z             }
2026-06-21T07:19:09.6674172Z           ]
2026-06-21T07:19:09.6674273Z         },
2026-06-21T07:19:09.6674380Z         "int": {
2026-06-21T07:19:09.6674489Z           "complete": true,
2026-06-21T07:19:09.6674596Z           "evidence": [
2026-06-21T07:19:09.6674704Z             {
2026-06-21T07:19:09.6674853Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T07:19:09.6674972Z               "line": 145
2026-06-21T07:19:09.6675071Z             },
2026-06-21T07:19:09.6675177Z             {
2026-06-21T07:19:09.6675325Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6675439Z               "line": 665
2026-06-21T07:19:09.6675540Z             },
2026-06-21T07:19:09.6675639Z             {
2026-06-21T07:19:09.6675792Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6675892Z               "line": 964
2026-06-21T07:19:09.6675997Z             }
2026-06-21T07:19:09.6676102Z           ]
2026-06-21T07:19:09.6676203Z         },
2026-06-21T07:19:09.6676311Z         "unit": {
2026-06-21T07:19:09.6676422Z           "complete": true,
2026-06-21T07:19:09.6676536Z           "evidence": [
2026-06-21T07:19:09.6676640Z             {
2026-06-21T07:19:09.6676797Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6676905Z               "line": 1134
2026-06-21T07:19:09.6677004Z             },
2026-06-21T07:19:09.6677109Z             {
2026-06-21T07:19:09.6677262Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6677376Z               "line": 1521
2026-06-21T07:19:09.6677477Z             },
2026-06-21T07:19:09.6677581Z             {
2026-06-21T07:19:09.6677739Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T07:19:09.6677844Z               "line": 84
2026-06-21T07:19:09.6677953Z             },
2026-06-21T07:19:09.6678049Z             {
2026-06-21T07:19:09.6678201Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6678306Z               "line": 812
2026-06-21T07:19:09.6678408Z             },
2026-06-21T07:19:09.6678516Z             {
2026-06-21T07:19:09.6678664Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6678774Z               "line": 823
2026-06-21T07:19:09.6678873Z             },
2026-06-21T07:19:09.6679047Z             {
2026-06-21T07:19:09.6679432Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6679626Z               "line": 838
2026-06-21T07:19:09.6679722Z             },
2026-06-21T07:19:09.6679817Z             {
2026-06-21T07:19:09.6680250Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6680351Z               "line": 166
2026-06-21T07:19:09.6680461Z             },
2026-06-21T07:19:09.6680565Z             {
2026-06-21T07:19:09.6680723Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6680943Z               "line": 181
2026-06-21T07:19:09.6681042Z             },
2026-06-21T07:19:09.6681142Z             {
2026-06-21T07:19:09.6681291Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.6681409Z               "line": 214
2026-06-21T07:19:09.6681495Z             }
2026-06-21T07:19:09.6681606Z           ]
2026-06-21T07:19:09.6681704Z         }
2026-06-21T07:19:09.6681809Z       }
2026-06-21T07:19:09.6681904Z     },
2026-06-21T07:19:09.6682003Z     {
2026-06-21T07:19:09.6682121Z       "id": "REQ-INST-8",
2026-06-21T07:19:09.6682312Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T07:19:09.6682426Z       "requiredStages": [
2026-06-21T07:19:09.6682531Z         "impl",
2026-06-21T07:19:09.6682627Z         "unit",
2026-06-21T07:19:09.6682736Z         "int"
2026-06-21T07:19:09.6682836Z       ],
2026-06-21T07:19:09.6682947Z       "stages": {
2026-06-21T07:19:09.6683046Z         "doc": {
2026-06-21T07:19:09.6683166Z           "complete": false,
2026-06-21T07:19:09.6683285Z           "evidence": []
2026-06-21T07:19:09.6683394Z         },
2026-06-21T07:19:09.6683495Z         "impl": {
2026-06-21T07:19:09.6683604Z           "complete": true,
2026-06-21T07:19:09.6683709Z           "evidence": [
2026-06-21T07:19:09.6683810Z             {
2026-06-21T07:19:09.6683966Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6684071Z               "line": 104
2026-06-21T07:19:09.6684173Z             },
2026-06-21T07:19:09.6684281Z             {
2026-06-21T07:19:09.6684415Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6684530Z               "line": 351
2026-06-21T07:19:09.6684628Z             },
2026-06-21T07:19:09.6684728Z             {
2026-06-21T07:19:09.6684857Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.6684964Z               "line": 391
2026-06-21T07:19:09.6685069Z             },
2026-06-21T07:19:09.6685165Z             {
2026-06-21T07:19:09.6685297Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.6685403Z               "line": 62
2026-06-21T07:19:09.6685513Z             }
2026-06-21T07:19:09.6685617Z           ]
2026-06-21T07:19:09.6685713Z         },
2026-06-21T07:19:09.6685814Z         "int": {
2026-06-21T07:19:09.6685923Z           "complete": true,
2026-06-21T07:19:09.6686037Z           "evidence": [
2026-06-21T07:19:09.6686143Z             {
2026-06-21T07:19:09.6686299Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.6686410Z               "line": 415
2026-06-21T07:19:09.6686514Z             },
2026-06-21T07:19:09.6686619Z             {
2026-06-21T07:19:09.6686763Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.6686876Z               "line": 1028
2026-06-21T07:19:09.6686982Z             }
2026-06-21T07:19:09.6687083Z           ]
2026-06-21T07:19:09.6687190Z         },
2026-06-21T07:19:09.6687294Z         "unit": {
2026-06-21T07:19:09.6687409Z           "complete": true,
2026-06-21T07:19:09.6687521Z           "evidence": [
2026-06-21T07:19:09.6687621Z             {
2026-06-21T07:19:09.6687761Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6687874Z               "line": 366
2026-06-21T07:19:09.6687979Z             },
2026-06-21T07:19:09.6688084Z             {
2026-06-21T07:19:09.6688232Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6688333Z               "line": 633
2026-06-21T07:19:09.6688438Z             },
2026-06-21T07:19:09.6688542Z             {
2026-06-21T07:19:09.6688685Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.6688795Z               "line": 116
2026-06-21T07:19:09.6689061Z             },
2026-06-21T07:19:09.6689166Z             {
2026-06-21T07:19:09.6689301Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.6689409Z               "line": 160
2026-06-21T07:19:09.6689539Z             }
2026-06-21T07:19:09.6689635Z           ]
2026-06-21T07:19:09.6689839Z         }
2026-06-21T07:19:09.6689926Z       }
2026-06-21T07:19:09.6690034Z     },
2026-06-21T07:19:09.6690133Z     {
2026-06-21T07:19:09.6690253Z       "id": "REQ-INST-9",
2026-06-21T07:19:09.6690471Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T07:19:09.6690578Z       "requiredStages": [
2026-06-21T07:19:09.6690687Z         "impl",
2026-06-21T07:19:09.6690786Z         "unit"
2026-06-21T07:19:09.6690892Z       ],
2026-06-21T07:19:09.6690987Z       "stages": {
2026-06-21T07:19:09.6691082Z         "doc": {
2026-06-21T07:19:09.6691198Z           "complete": false,
2026-06-21T07:19:09.6691311Z           "evidence": []
2026-06-21T07:19:09.6691421Z         },
2026-06-21T07:19:09.6691527Z         "impl": {
2026-06-21T07:19:09.6691640Z           "complete": true,
2026-06-21T07:19:09.6691745Z           "evidence": [
2026-06-21T07:19:09.6691851Z             {
2026-06-21T07:19:09.6692002Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6692113Z               "line": 449
2026-06-21T07:19:09.6692222Z             }
2026-06-21T07:19:09.6692321Z           ]
2026-06-21T07:19:09.6692426Z         },
2026-06-21T07:19:09.6692516Z         "int": {
2026-06-21T07:19:09.6692629Z           "complete": false,
2026-06-21T07:19:09.6692748Z           "evidence": []
2026-06-21T07:19:09.6692844Z         },
2026-06-21T07:19:09.6692948Z         "unit": {
2026-06-21T07:19:09.6693053Z           "complete": true,
2026-06-21T07:19:09.6693159Z           "evidence": [
2026-06-21T07:19:09.6693258Z             {
2026-06-21T07:19:09.6693411Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6693516Z               "line": 1397
2026-06-21T07:19:09.6693620Z             },
2026-06-21T07:19:09.6693731Z             {
2026-06-21T07:19:09.6693868Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6693977Z               "line": 1406
2026-06-21T07:19:09.6694079Z             },
2026-06-21T07:19:09.6694188Z             {
2026-06-21T07:19:09.6694326Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6694437Z               "line": 1422
2026-06-21T07:19:09.6694545Z             },
2026-06-21T07:19:09.6694646Z             {
2026-06-21T07:19:09.6694789Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6694899Z               "line": 1434
2026-06-21T07:19:09.6695004Z             },
2026-06-21T07:19:09.6695109Z             {
2026-06-21T07:19:09.6695250Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.6695360Z               "line": 1454
2026-06-21T07:19:09.6695459Z             }
2026-06-21T07:19:09.6695562Z           ]
2026-06-21T07:19:09.6695653Z         }
2026-06-21T07:19:09.6695754Z       }
2026-06-21T07:19:09.6695858Z     },
2026-06-21T07:19:09.6695943Z     {
2026-06-21T07:19:09.6696064Z       "id": "REQ-INSTALL-1",
2026-06-21T07:19:09.6696278Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T07:19:09.6696397Z       "requiredStages": [
2026-06-21T07:19:09.6696502Z         "doc",
2026-06-21T07:19:09.6696607Z         "impl",
2026-06-21T07:19:09.6696712Z         "int"
2026-06-21T07:19:09.6696812Z       ],
2026-06-21T07:19:09.6696917Z       "stages": {
2026-06-21T07:19:09.6697018Z         "doc": {
2026-06-21T07:19:09.6697131Z           "complete": true,
2026-06-21T07:19:09.6697237Z           "evidence": [
2026-06-21T07:19:09.6697342Z             {
2026-06-21T07:19:09.6697460Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6697567Z               "line": 754
2026-06-21T07:19:09.6697671Z             }
2026-06-21T07:19:09.6697774Z           ]
2026-06-21T07:19:09.6697974Z         },
2026-06-21T07:19:09.6698077Z         "impl": {
2026-06-21T07:19:09.6698201Z           "complete": true,
2026-06-21T07:19:09.6698306Z           "evidence": [
2026-06-21T07:19:09.6698406Z             {
2026-06-21T07:19:09.6698535Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6698640Z               "line": 57
2026-06-21T07:19:09.6698811Z             },
2026-06-21T07:19:09.6698912Z             {
2026-06-21T07:19:09.6699125Z               "path": "installer/install.sh",
2026-06-21T07:19:09.6699227Z               "line": 52
2026-06-21T07:19:09.6699326Z             }
2026-06-21T07:19:09.6699431Z           ]
2026-06-21T07:19:09.6699532Z         },
2026-06-21T07:19:09.6699641Z         "int": {
2026-06-21T07:19:09.6699746Z           "complete": true,
2026-06-21T07:19:09.6699857Z           "evidence": [
2026-06-21T07:19:09.6699960Z             {
2026-06-21T07:19:09.6700104Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T07:19:09.6700214Z               "line": 21
2026-06-21T07:19:09.6700313Z             }
2026-06-21T07:19:09.6700419Z           ]
2026-06-21T07:19:09.6700510Z         },
2026-06-21T07:19:09.6700612Z         "unit": {
2026-06-21T07:19:09.6700726Z           "complete": false,
2026-06-21T07:19:09.6700837Z           "evidence": []
2026-06-21T07:19:09.6700937Z         }
2026-06-21T07:19:09.6701036Z       }
2026-06-21T07:19:09.6701143Z     },
2026-06-21T07:19:09.6701238Z     {
2026-06-21T07:19:09.6701351Z       "id": "REQ-INSTALL-10",
2026-06-21T07:19:09.6702810Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T07:19:09.6702924Z       "requiredStages": [
2026-06-21T07:19:09.6703034Z         "impl",
2026-06-21T07:19:09.6703137Z         "unit"
2026-06-21T07:19:09.6703232Z       ],
2026-06-21T07:19:09.6703332Z       "stages": {
2026-06-21T07:19:09.6703433Z         "doc": {
2026-06-21T07:19:09.6703551Z           "complete": false,
2026-06-21T07:19:09.6703651Z           "evidence": []
2026-06-21T07:19:09.6703757Z         },
2026-06-21T07:19:09.6703861Z         "impl": {
2026-06-21T07:19:09.6703966Z           "complete": true,
2026-06-21T07:19:09.6704067Z           "evidence": [
2026-06-21T07:19:09.6704166Z             {
2026-06-21T07:19:09.6704301Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6704410Z               "line": 191
2026-06-21T07:19:09.6704509Z             }
2026-06-21T07:19:09.6704605Z           ]
2026-06-21T07:19:09.6704696Z         },
2026-06-21T07:19:09.6704800Z         "int": {
2026-06-21T07:19:09.6704906Z           "complete": false,
2026-06-21T07:19:09.6705016Z           "evidence": []
2026-06-21T07:19:09.6705115Z         },
2026-06-21T07:19:09.6705226Z         "unit": {
2026-06-21T07:19:09.6705340Z           "complete": true,
2026-06-21T07:19:09.6705444Z           "evidence": [
2026-06-21T07:19:09.6705545Z             {
2026-06-21T07:19:09.6705697Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T07:19:09.6705810Z               "line": 211
2026-06-21T07:19:09.6705920Z             }
2026-06-21T07:19:09.6706037Z           ]
2026-06-21T07:19:09.6706136Z         }
2026-06-21T07:19:09.6706242Z       }
2026-06-21T07:19:09.6706348Z     },
2026-06-21T07:19:09.6706437Z     {
2026-06-21T07:19:09.6706562Z       "id": "REQ-INSTALL-11",
2026-06-21T07:19:09.6708396Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T07:19:09.6708637Z       "requiredStages": [
2026-06-21T07:19:09.6708741Z         "doc",
2026-06-21T07:19:09.6709051Z         "impl",
2026-06-21T07:19:09.6709163Z         "unit"
2026-06-21T07:19:09.6709262Z       ],
2026-06-21T07:19:09.6709362Z       "stages": {
2026-06-21T07:19:09.6709468Z         "doc": {
2026-06-21T07:19:09.6709577Z           "complete": true,
2026-06-21T07:19:09.6709681Z           "evidence": [
2026-06-21T07:19:09.6709782Z             {
2026-06-21T07:19:09.6709911Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6710015Z               "line": 138
2026-06-21T07:19:09.6710116Z             },
2026-06-21T07:19:09.6710221Z             {
2026-06-21T07:19:09.6710349Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.6710455Z               "line": 82
2026-06-21T07:19:09.6710554Z             }
2026-06-21T07:19:09.6710654Z           ]
2026-06-21T07:19:09.6710741Z         },
2026-06-21T07:19:09.6710844Z         "impl": {
2026-06-21T07:19:09.6710960Z           "complete": true,
2026-06-21T07:19:09.6711056Z           "evidence": [
2026-06-21T07:19:09.6711159Z             {
2026-06-21T07:19:09.6711301Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.6711412Z               "line": 223
2026-06-21T07:19:09.6711511Z             },
2026-06-21T07:19:09.6711620Z             {
2026-06-21T07:19:09.6711774Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6711883Z               "line": 99
2026-06-21T07:19:09.6711979Z             },
2026-06-21T07:19:09.6712069Z             {
2026-06-21T07:19:09.6712221Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.6712328Z               "line": 117
2026-06-21T07:19:09.6712431Z             },
2026-06-21T07:19:09.6712536Z             {
2026-06-21T07:19:09.6712685Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T07:19:09.6712789Z               "line": 332
2026-06-21T07:19:09.6712889Z             },
2026-06-21T07:19:09.6712991Z             {
2026-06-21T07:19:09.6713127Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.6713233Z               "line": 88
2026-06-21T07:19:09.6713329Z             },
2026-06-21T07:19:09.6713428Z             {
2026-06-21T07:19:09.6713570Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.6713674Z               "line": 104
2026-06-21T07:19:09.6713778Z             },
2026-06-21T07:19:09.6713878Z             {
2026-06-21T07:19:09.6714026Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6714130Z               "line": 297
2026-06-21T07:19:09.6714226Z             },
2026-06-21T07:19:09.6714336Z             {
2026-06-21T07:19:09.6714478Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6714584Z               "line": 332
2026-06-21T07:19:09.6714679Z             },
2026-06-21T07:19:09.6714779Z             {
2026-06-21T07:19:09.6714927Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6715031Z               "line": 523
2026-06-21T07:19:09.6715136Z             },
2026-06-21T07:19:09.6715237Z             {
2026-06-21T07:19:09.6715384Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6715490Z               "line": 546
2026-06-21T07:19:09.6715599Z             },
2026-06-21T07:19:09.6715709Z             {
2026-06-21T07:19:09.6715839Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6715951Z               "line": 561
2026-06-21T07:19:09.6716057Z             },
2026-06-21T07:19:09.6716168Z             {
2026-06-21T07:19:09.6716309Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.6716427Z               "line": 492
2026-06-21T07:19:09.6716532Z             }
2026-06-21T07:19:09.6716631Z           ]
2026-06-21T07:19:09.6716841Z         },
2026-06-21T07:19:09.6716950Z         "int": {
2026-06-21T07:19:09.6717074Z           "complete": false,
2026-06-21T07:19:09.6717189Z           "evidence": []
2026-06-21T07:19:09.6717279Z         },
2026-06-21T07:19:09.6717389Z         "unit": {
2026-06-21T07:19:09.6717489Z           "complete": true,
2026-06-21T07:19:09.6717699Z           "evidence": [
2026-06-21T07:19:09.6717804Z             {
2026-06-21T07:19:09.6717951Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6718057Z               "line": 799
2026-06-21T07:19:09.6718152Z             },
2026-06-21T07:19:09.6718256Z             {
2026-06-21T07:19:09.6718396Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6718514Z               "line": 811
2026-06-21T07:19:09.6718609Z             },
2026-06-21T07:19:09.6718716Z             {
2026-06-21T07:19:09.6718847Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.6719042Z               "line": 820
2026-06-21T07:19:09.6719155Z             }
2026-06-21T07:19:09.6719263Z           ]
2026-06-21T07:19:09.6719364Z         }
2026-06-21T07:19:09.6719461Z       }
2026-06-21T07:19:09.6719559Z     },
2026-06-21T07:19:09.6719660Z     {
2026-06-21T07:19:09.6719769Z       "id": "REQ-INSTALL-12",
2026-06-21T07:19:09.6722476Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T07:19:09.6722611Z       "requiredStages": [
2026-06-21T07:19:09.6722710Z         "doc",
2026-06-21T07:19:09.6722825Z         "impl",
2026-06-21T07:19:09.6722926Z         "unit",
2026-06-21T07:19:09.6723030Z         "int"
2026-06-21T07:19:09.6723130Z       ],
2026-06-21T07:19:09.6723227Z       "stages": {
2026-06-21T07:19:09.6723325Z         "doc": {
2026-06-21T07:19:09.6723440Z           "complete": true,
2026-06-21T07:19:09.6723546Z           "evidence": [
2026-06-21T07:19:09.6723649Z             {
2026-06-21T07:19:09.6723769Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6723871Z               "line": 185
2026-06-21T07:19:09.6723973Z             }
2026-06-21T07:19:09.6724087Z           ]
2026-06-21T07:19:09.6724188Z         },
2026-06-21T07:19:09.6724290Z         "impl": {
2026-06-21T07:19:09.6724404Z           "complete": true,
2026-06-21T07:19:09.6724510Z           "evidence": [
2026-06-21T07:19:09.6724610Z             {
2026-06-21T07:19:09.6724762Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6724872Z               "line": 27
2026-06-21T07:19:09.6724981Z             },
2026-06-21T07:19:09.6725087Z             {
2026-06-21T07:19:09.6725225Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6725334Z               "line": 223
2026-06-21T07:19:09.6725440Z             },
2026-06-21T07:19:09.6725540Z             {
2026-06-21T07:19:09.6725668Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6725774Z               "line": 5677
2026-06-21T07:19:09.6725888Z             }
2026-06-21T07:19:09.6725992Z           ]
2026-06-21T07:19:09.6726103Z         },
2026-06-21T07:19:09.6726202Z         "int": {
2026-06-21T07:19:09.6726312Z           "complete": true,
2026-06-21T07:19:09.6726418Z           "evidence": [
2026-06-21T07:19:09.6726612Z             {
2026-06-21T07:19:09.6726766Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T07:19:09.6726869Z               "line": 19
2026-06-21T07:19:09.6726973Z             }
2026-06-21T07:19:09.6727078Z           ]
2026-06-21T07:19:09.6727181Z         },
2026-06-21T07:19:09.6727382Z         "unit": {
2026-06-21T07:19:09.6727491Z           "complete": true,
2026-06-21T07:19:09.6727605Z           "evidence": [
2026-06-21T07:19:09.6727706Z             {
2026-06-21T07:19:09.6727858Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6727958Z               "line": 395
2026-06-21T07:19:09.6728049Z             },
2026-06-21T07:19:09.6728158Z             {
2026-06-21T07:19:09.6728302Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6728416Z               "line": 421
2026-06-21T07:19:09.6728516Z             },
2026-06-21T07:19:09.6728617Z             {
2026-06-21T07:19:09.6728769Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6728878Z               "line": 440
2026-06-21T07:19:09.6729064Z             },
2026-06-21T07:19:09.6729165Z             {
2026-06-21T07:19:09.6729313Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6729417Z               "line": 475
2026-06-21T07:19:09.6729530Z             },
2026-06-21T07:19:09.6729635Z             {
2026-06-21T07:19:09.6729758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6729871Z               "line": 8665
2026-06-21T07:19:09.6729968Z             }
2026-06-21T07:19:09.6730072Z           ]
2026-06-21T07:19:09.6730172Z         }
2026-06-21T07:19:09.6730273Z       }
2026-06-21T07:19:09.6730378Z     },
2026-06-21T07:19:09.6730472Z     {
2026-06-21T07:19:09.6730592Z       "id": "REQ-INSTALL-2",
2026-06-21T07:19:09.6730754Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T07:19:09.6730860Z       "requiredStages": [
2026-06-21T07:19:09.6730964Z         "doc"
2026-06-21T07:19:09.6731078Z       ],
2026-06-21T07:19:09.6731184Z       "stages": {
2026-06-21T07:19:09.6731284Z         "doc": {
2026-06-21T07:19:09.6731397Z           "complete": true,
2026-06-21T07:19:09.6731504Z           "evidence": [
2026-06-21T07:19:09.6731607Z             {
2026-06-21T07:19:09.6731712Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6731837Z               "line": 755
2026-06-21T07:19:09.6731936Z             }
2026-06-21T07:19:09.6732041Z           ]
2026-06-21T07:19:09.6732148Z         },
2026-06-21T07:19:09.6732251Z         "impl": {
2026-06-21T07:19:09.6732374Z           "complete": false,
2026-06-21T07:19:09.6732474Z           "evidence": []
2026-06-21T07:19:09.6732576Z         },
2026-06-21T07:19:09.6732683Z         "int": {
2026-06-21T07:19:09.6732789Z           "complete": false,
2026-06-21T07:19:09.6732899Z           "evidence": []
2026-06-21T07:19:09.6733003Z         },
2026-06-21T07:19:09.6733104Z         "unit": {
2026-06-21T07:19:09.6733213Z           "complete": false,
2026-06-21T07:19:09.6733337Z           "evidence": []
2026-06-21T07:19:09.6733443Z         }
2026-06-21T07:19:09.6733547Z       }
2026-06-21T07:19:09.6733646Z     },
2026-06-21T07:19:09.6733748Z     {
2026-06-21T07:19:09.6733866Z       "id": "REQ-INSTALL-3",
2026-06-21T07:19:09.6734034Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T07:19:09.6734153Z       "requiredStages": [
2026-06-21T07:19:09.6734257Z         "impl",
2026-06-21T07:19:09.6734363Z         "int"
2026-06-21T07:19:09.6734468Z       ],
2026-06-21T07:19:09.6734566Z       "stages": {
2026-06-21T07:19:09.6734676Z         "doc": {
2026-06-21T07:19:09.6734790Z           "complete": false,
2026-06-21T07:19:09.6734893Z           "evidence": []
2026-06-21T07:19:09.6734998Z         },
2026-06-21T07:19:09.6735099Z         "impl": {
2026-06-21T07:19:09.6735217Z           "complete": true,
2026-06-21T07:19:09.6735317Z           "evidence": [
2026-06-21T07:19:09.6735423Z             {
2026-06-21T07:19:09.6735551Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6735771Z               "line": 100
2026-06-21T07:19:09.6735870Z             },
2026-06-21T07:19:09.6735981Z             {
2026-06-21T07:19:09.6736100Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6736204Z               "line": 111
2026-06-21T07:19:09.6736467Z             },
2026-06-21T07:19:09.6736571Z             {
2026-06-21T07:19:09.6736705Z               "path": "installer/install.sh",
2026-06-21T07:19:09.6736819Z               "line": 79
2026-06-21T07:19:09.6736921Z             }
2026-06-21T07:19:09.6737025Z           ]
2026-06-21T07:19:09.6737129Z         },
2026-06-21T07:19:09.6737240Z         "int": {
2026-06-21T07:19:09.6737345Z           "complete": true,
2026-06-21T07:19:09.6737462Z           "evidence": [
2026-06-21T07:19:09.6737558Z             {
2026-06-21T07:19:09.6737708Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T07:19:09.6737817Z               "line": 167
2026-06-21T07:19:09.6737918Z             }
2026-06-21T07:19:09.6738080Z           ]
2026-06-21T07:19:09.6738184Z         },
2026-06-21T07:19:09.6738285Z         "unit": {
2026-06-21T07:19:09.6738389Z           "complete": false,
2026-06-21T07:19:09.6738504Z           "evidence": []
2026-06-21T07:19:09.6738595Z         }
2026-06-21T07:19:09.6738690Z       }
2026-06-21T07:19:09.6738804Z     },
2026-06-21T07:19:09.6738901Z     {
2026-06-21T07:19:09.6739114Z       "id": "REQ-INSTALL-4",
2026-06-21T07:19:09.6739802Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T07:19:09.6739911Z       "requiredStages": [
2026-06-21T07:19:09.6740019Z         "impl",
2026-06-21T07:19:09.6740119Z         "unit"
2026-06-21T07:19:09.6740224Z       ],
2026-06-21T07:19:09.6740360Z       "stages": {
2026-06-21T07:19:09.6740465Z         "doc": {
2026-06-21T07:19:09.6740571Z           "complete": false,
2026-06-21T07:19:09.6740679Z           "evidence": []
2026-06-21T07:19:09.6740790Z         },
2026-06-21T07:19:09.6740895Z         "impl": {
2026-06-21T07:19:09.6741018Z           "complete": true,
2026-06-21T07:19:09.6741119Z           "evidence": [
2026-06-21T07:19:09.6741210Z             {
2026-06-21T07:19:09.6741386Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.6741495Z               "line": 165
2026-06-21T07:19:09.6741596Z             },
2026-06-21T07:19:09.6741695Z             {
2026-06-21T07:19:09.6741848Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6741953Z               "line": 29
2026-06-21T07:19:09.6742059Z             },
2026-06-21T07:19:09.6742182Z             {
2026-06-21T07:19:09.6742330Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6742436Z               "line": 288
2026-06-21T07:19:09.6742534Z             },
2026-06-21T07:19:09.6742640Z             {
2026-06-21T07:19:09.6742788Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6742891Z               "line": 356
2026-06-21T07:19:09.6742996Z             },
2026-06-21T07:19:09.6743102Z             {
2026-06-21T07:19:09.6743253Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6743359Z               "line": 386
2026-06-21T07:19:09.6743464Z             },
2026-06-21T07:19:09.6743572Z             {
2026-06-21T07:19:09.6743727Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6743831Z               "line": 434
2026-06-21T07:19:09.6743931Z             },
2026-06-21T07:19:09.6744036Z             {
2026-06-21T07:19:09.6744160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6744264Z               "line": 5396
2026-06-21T07:19:09.6744361Z             }
2026-06-21T07:19:09.6744470Z           ]
2026-06-21T07:19:09.6744575Z         },
2026-06-21T07:19:09.6744676Z         "int": {
2026-06-21T07:19:09.6744793Z           "complete": false,
2026-06-21T07:19:09.6745005Z           "evidence": []
2026-06-21T07:19:09.6745112Z         },
2026-06-21T07:19:09.6745216Z         "unit": {
2026-06-21T07:19:09.6745327Z           "complete": true,
2026-06-21T07:19:09.6745439Z           "evidence": [
2026-06-21T07:19:09.6745543Z             {
2026-06-21T07:19:09.6745801Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.6745911Z               "line": 375
2026-06-21T07:19:09.6746021Z             },
2026-06-21T07:19:09.6746125Z             {
2026-06-21T07:19:09.6746274Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6746388Z               "line": 808
2026-06-21T07:19:09.6746483Z             },
2026-06-21T07:19:09.6746594Z             {
2026-06-21T07:19:09.6746736Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6746846Z               "line": 849
2026-06-21T07:19:09.6746956Z             },
2026-06-21T07:19:09.6747050Z             {
2026-06-21T07:19:09.6747195Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6747303Z               "line": 869
2026-06-21T07:19:09.6747408Z             },
2026-06-21T07:19:09.6747509Z             {
2026-06-21T07:19:09.6747636Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6747747Z               "line": 8403
2026-06-21T07:19:09.6747848Z             }
2026-06-21T07:19:09.6747951Z           ]
2026-06-21T07:19:09.6748051Z         }
2026-06-21T07:19:09.6748156Z       }
2026-06-21T07:19:09.6748259Z     },
2026-06-21T07:19:09.6748363Z     {
2026-06-21T07:19:09.6748487Z       "id": "REQ-INSTALL-5",
2026-06-21T07:19:09.6749098Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T07:19:09.6749222Z       "requiredStages": [
2026-06-21T07:19:09.6749326Z         "impl",
2026-06-21T07:19:09.6749427Z         "int"
2026-06-21T07:19:09.6749531Z       ],
2026-06-21T07:19:09.6752939Z       "stages": {
2026-06-21T07:19:09.6753075Z         "doc": {
2026-06-21T07:19:09.6753190Z           "complete": false,
2026-06-21T07:19:09.6753306Z           "evidence": []
2026-06-21T07:19:09.6753404Z         },
2026-06-21T07:19:09.6753513Z         "impl": {
2026-06-21T07:19:09.6753633Z           "complete": true,
2026-06-21T07:19:09.6753733Z           "evidence": [
2026-06-21T07:19:09.6753837Z             {
2026-06-21T07:19:09.6753982Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6754095Z               "line": 5
2026-06-21T07:19:09.6754200Z             },
2026-06-21T07:19:09.6754305Z             {
2026-06-21T07:19:09.6754434Z               "path": "installer/install.sh",
2026-06-21T07:19:09.6754549Z               "line": 6
2026-06-21T07:19:09.6754654Z             }
2026-06-21T07:19:09.6754753Z           ]
2026-06-21T07:19:09.6754854Z         },
2026-06-21T07:19:09.6754954Z         "int": {
2026-06-21T07:19:09.6755063Z           "complete": true,
2026-06-21T07:19:09.6755159Z           "evidence": [
2026-06-21T07:19:09.6755259Z             {
2026-06-21T07:19:09.6755415Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T07:19:09.6755522Z               "line": 22
2026-06-21T07:19:09.6755625Z             }
2026-06-21T07:19:09.6755734Z           ]
2026-06-21T07:19:09.6755830Z         },
2026-06-21T07:19:09.6755934Z         "unit": {
2026-06-21T07:19:09.6756051Z           "complete": false,
2026-06-21T07:19:09.6756166Z           "evidence": []
2026-06-21T07:19:09.6756267Z         }
2026-06-21T07:19:09.6756361Z       }
2026-06-21T07:19:09.6756462Z     },
2026-06-21T07:19:09.6756562Z     {
2026-06-21T07:19:09.6756666Z       "id": "REQ-INSTALL-6",
2026-06-21T07:19:09.6757963Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T07:19:09.6758240Z       "requiredStages": [
2026-06-21T07:19:09.6758331Z         "impl",
2026-06-21T07:19:09.6758437Z         "unit"
2026-06-21T07:19:09.6758535Z       ],
2026-06-21T07:19:09.6758735Z       "stages": {
2026-06-21T07:19:09.6758843Z         "doc": {
2026-06-21T07:19:09.6759038Z           "complete": false,
2026-06-21T07:19:09.6759153Z           "evidence": []
2026-06-21T07:19:09.6759247Z         },
2026-06-21T07:19:09.6759343Z         "impl": {
2026-06-21T07:19:09.6759453Z           "complete": true,
2026-06-21T07:19:09.6759552Z           "evidence": [
2026-06-21T07:19:09.6759658Z             {
2026-06-21T07:19:09.6759806Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6759915Z               "line": 61
2026-06-21T07:19:09.6760016Z             },
2026-06-21T07:19:09.6760120Z             {
2026-06-21T07:19:09.6760273Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.6760392Z               "line": 641
2026-06-21T07:19:09.6760487Z             },
2026-06-21T07:19:09.6760588Z             {
2026-06-21T07:19:09.6760735Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.6760840Z               "line": 191
2026-06-21T07:19:09.6760941Z             },
2026-06-21T07:19:09.6761045Z             {
2026-06-21T07:19:09.6761191Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.6761297Z               "line": 276
2026-06-21T07:19:09.6761400Z             },
2026-06-21T07:19:09.6761504Z             {
2026-06-21T07:19:09.6761634Z               "path": "crates/spt/src/main.rs",
2026-06-21T07:19:09.6761738Z               "line": 43
2026-06-21T07:19:09.6761833Z             },
2026-06-21T07:19:09.6761939Z             {
2026-06-21T07:19:09.6762076Z               "path": "installer/install.sh",
2026-06-21T07:19:09.6762186Z               "line": 104
2026-06-21T07:19:09.6762301Z             }
2026-06-21T07:19:09.6762405Z           ]
2026-06-21T07:19:09.6762511Z         },
2026-06-21T07:19:09.6762616Z         "int": {
2026-06-21T07:19:09.6762734Z           "complete": false,
2026-06-21T07:19:09.6762854Z           "evidence": []
2026-06-21T07:19:09.6762954Z         },
2026-06-21T07:19:09.6763059Z         "unit": {
2026-06-21T07:19:09.6763169Z           "complete": true,
2026-06-21T07:19:09.6763283Z           "evidence": [
2026-06-21T07:19:09.6763378Z             {
2026-06-21T07:19:09.6763518Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T07:19:09.6763635Z               "line": 894
2026-06-21T07:19:09.6763736Z             }
2026-06-21T07:19:09.6763842Z           ]
2026-06-21T07:19:09.6763936Z         }
2026-06-21T07:19:09.6764044Z       }
2026-06-21T07:19:09.6764140Z     },
2026-06-21T07:19:09.6764246Z     {
2026-06-21T07:19:09.6764355Z       "id": "REQ-INSTALL-7",
2026-06-21T07:19:09.6765519Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T07:19:09.6765647Z       "requiredStages": [
2026-06-21T07:19:09.6765734Z         "impl"
2026-06-21T07:19:09.6765843Z       ],
2026-06-21T07:19:09.6765952Z       "stages": {
2026-06-21T07:19:09.6766053Z         "doc": {
2026-06-21T07:19:09.6766153Z           "complete": false,
2026-06-21T07:19:09.6766266Z           "evidence": []
2026-06-21T07:19:09.6766375Z         },
2026-06-21T07:19:09.6766480Z         "impl": {
2026-06-21T07:19:09.6766597Z           "complete": true,
2026-06-21T07:19:09.6766707Z           "evidence": [
2026-06-21T07:19:09.6766793Z             {
2026-06-21T07:19:09.6766926Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6767037Z               "line": 3920
2026-06-21T07:19:09.6767245Z             },
2026-06-21T07:19:09.6767347Z             {
2026-06-21T07:19:09.6767480Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6767579Z               "line": 157
2026-06-21T07:19:09.6767680Z             }
2026-06-21T07:19:09.6767785Z           ]
2026-06-21T07:19:09.6767976Z         },
2026-06-21T07:19:09.6768085Z         "int": {
2026-06-21T07:19:09.6768195Z           "complete": false,
2026-06-21T07:19:09.6768306Z           "evidence": []
2026-06-21T07:19:09.6768409Z         },
2026-06-21T07:19:09.6768509Z         "unit": {
2026-06-21T07:19:09.6768611Z           "complete": false,
2026-06-21T07:19:09.6768720Z           "evidence": []
2026-06-21T07:19:09.6768824Z         }
2026-06-21T07:19:09.6768911Z       }
2026-06-21T07:19:09.6769091Z     },
2026-06-21T07:19:09.6769195Z     {
2026-06-21T07:19:09.6769304Z       "id": "REQ-INSTALL-8",
2026-06-21T07:19:09.6770427Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T07:19:09.6770547Z       "requiredStages": [
2026-06-21T07:19:09.6770647Z         "impl"
2026-06-21T07:19:09.6770751Z       ],
2026-06-21T07:19:09.6770858Z       "stages": {
2026-06-21T07:19:09.6770967Z         "doc": {
2026-06-21T07:19:09.6771076Z           "complete": false,
2026-06-21T07:19:09.6771187Z           "evidence": []
2026-06-21T07:19:09.6771286Z         },
2026-06-21T07:19:09.6771395Z         "impl": {
2026-06-21T07:19:09.6771497Z           "complete": true,
2026-06-21T07:19:09.6771606Z           "evidence": [
2026-06-21T07:19:09.6771709Z             {
2026-06-21T07:19:09.6771847Z               "path": "installer/install.ps1",
2026-06-21T07:19:09.6771965Z               "line": 184
2026-06-21T07:19:09.6772060Z             },
2026-06-21T07:19:09.6772160Z             {
2026-06-21T07:19:09.6772289Z               "path": "installer/install.sh",
2026-06-21T07:19:09.6772403Z               "line": 121
2026-06-21T07:19:09.6772509Z             }
2026-06-21T07:19:09.6772613Z           ]
2026-06-21T07:19:09.6772717Z         },
2026-06-21T07:19:09.6772819Z         "int": {
2026-06-21T07:19:09.6772933Z           "complete": false,
2026-06-21T07:19:09.6773037Z           "evidence": []
2026-06-21T07:19:09.6773138Z         },
2026-06-21T07:19:09.6773237Z         "unit": {
2026-06-21T07:19:09.6773347Z           "complete": false,
2026-06-21T07:19:09.6773463Z           "evidence": []
2026-06-21T07:19:09.6773562Z         }
2026-06-21T07:19:09.6773657Z       }
2026-06-21T07:19:09.6773763Z     },
2026-06-21T07:19:09.6773857Z     {
2026-06-21T07:19:09.6773972Z       "id": "REQ-INSTALL-9",
2026-06-21T07:19:09.6775229Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T07:19:09.6775355Z       "requiredStages": [
2026-06-21T07:19:09.6775454Z         "doc",
2026-06-21T07:19:09.6775558Z         "impl",
2026-06-21T07:19:09.6775659Z         "unit"
2026-06-21T07:19:09.6775759Z       ],
2026-06-21T07:19:09.6775868Z       "stages": {
2026-06-21T07:19:09.6775964Z         "doc": {
2026-06-21T07:19:09.6776083Z           "complete": true,
2026-06-21T07:19:09.6776193Z           "evidence": [
2026-06-21T07:19:09.6776299Z             {
2026-06-21T07:19:09.6776417Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6776522Z               "line": 771
2026-06-21T07:19:09.6776628Z             }
2026-06-21T07:19:09.6776830Z           ]
2026-06-21T07:19:09.6776931Z         },
2026-06-21T07:19:09.6777035Z         "impl": {
2026-06-21T07:19:09.6777143Z           "complete": true,
2026-06-21T07:19:09.6777253Z           "evidence": [
2026-06-21T07:19:09.6777354Z             {
2026-06-21T07:19:09.6777486Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6777673Z               "line": 2535
2026-06-21T07:19:09.6777772Z             },
2026-06-21T07:19:09.6777877Z             {
2026-06-21T07:19:09.6778002Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6778116Z               "line": 2559
2026-06-21T07:19:09.6778212Z             }
2026-06-21T07:19:09.6778302Z           ]
2026-06-21T07:19:09.6778397Z         },
2026-06-21T07:19:09.6778507Z         "int": {
2026-06-21T07:19:09.6778622Z           "complete": false,
2026-06-21T07:19:09.6778726Z           "evidence": []
2026-06-21T07:19:09.6778827Z         },
2026-06-21T07:19:09.6778932Z         "unit": {
2026-06-21T07:19:09.6779132Z           "complete": true,
2026-06-21T07:19:09.6779242Z           "evidence": [
2026-06-21T07:19:09.6779346Z             {
2026-06-21T07:19:09.6779476Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6779581Z               "line": 7591
2026-06-21T07:19:09.6779684Z             },
2026-06-21T07:19:09.6779783Z             {
2026-06-21T07:19:09.6779921Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6780024Z               "line": 8433
2026-06-21T07:19:09.6780125Z             }
2026-06-21T07:19:09.6780230Z           ]
2026-06-21T07:19:09.6780330Z         }
2026-06-21T07:19:09.6780429Z       }
2026-06-21T07:19:09.6780526Z     },
2026-06-21T07:19:09.6780626Z     {
2026-06-21T07:19:09.6780740Z       "id": "REQ-KICK-1",
2026-06-21T07:19:09.6783278Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T07:19:09.6783412Z       "requiredStages": [
2026-06-21T07:19:09.6783521Z         "doc",
2026-06-21T07:19:09.6783626Z         "impl",
2026-06-21T07:19:09.6783727Z         "unit",
2026-06-21T07:19:09.6783827Z         "int"
2026-06-21T07:19:09.6783926Z       ],
2026-06-21T07:19:09.6784028Z       "stages": {
2026-06-21T07:19:09.6784137Z         "doc": {
2026-06-21T07:19:09.6784251Z           "complete": true,
2026-06-21T07:19:09.6784357Z           "evidence": [
2026-06-21T07:19:09.6784470Z             {
2026-06-21T07:19:09.6784580Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6784695Z               "line": 342
2026-06-21T07:19:09.6784799Z             }
2026-06-21T07:19:09.6784895Z           ]
2026-06-21T07:19:09.6784996Z         },
2026-06-21T07:19:09.6785094Z         "impl": {
2026-06-21T07:19:09.6785202Z           "complete": true,
2026-06-21T07:19:09.6785309Z           "evidence": [
2026-06-21T07:19:09.6785413Z             {
2026-06-21T07:19:09.6785561Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.6785676Z               "line": 41
2026-06-21T07:19:09.6785780Z             },
2026-06-21T07:19:09.6785886Z             {
2026-06-21T07:19:09.6786014Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.6786118Z               "line": 701
2026-06-21T07:19:09.6786224Z             }
2026-06-21T07:19:09.6786324Z           ]
2026-06-21T07:19:09.6786563Z         },
2026-06-21T07:19:09.6786672Z         "int": {
2026-06-21T07:19:09.6786767Z           "complete": true,
2026-06-21T07:19:09.6786878Z           "evidence": [
2026-06-21T07:19:09.6786977Z             {
2026-06-21T07:19:09.6787125Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.6787329Z               "line": 913
2026-06-21T07:19:09.6787434Z             }
2026-06-21T07:19:09.6787539Z           ]
2026-06-21T07:19:09.6787637Z         },
2026-06-21T07:19:09.6787745Z         "unit": {
2026-06-21T07:19:09.6787856Z           "complete": true,
2026-06-21T07:19:09.6787961Z           "evidence": [
2026-06-21T07:19:09.6788060Z             {
2026-06-21T07:19:09.6788205Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.6788318Z               "line": 205
2026-06-21T07:19:09.6788428Z             }
2026-06-21T07:19:09.6788529Z           ]
2026-06-21T07:19:09.6788628Z         }
2026-06-21T07:19:09.6788728Z       }
2026-06-21T07:19:09.6788824Z     },
2026-06-21T07:19:09.6788934Z     {
2026-06-21T07:19:09.6789163Z       "id": "REQ-MANIFEST-1",
2026-06-21T07:19:09.6789392Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T07:19:09.6789501Z       "requiredStages": [
2026-06-21T07:19:09.6789601Z         "doc",
2026-06-21T07:19:09.6789707Z         "impl",
2026-06-21T07:19:09.6789807Z         "unit"
2026-06-21T07:19:09.6789911Z       ],
2026-06-21T07:19:09.6790017Z       "stages": {
2026-06-21T07:19:09.6790112Z         "doc": {
2026-06-21T07:19:09.6790221Z           "complete": true,
2026-06-21T07:19:09.6790324Z           "evidence": [
2026-06-21T07:19:09.6790425Z             {
2026-06-21T07:19:09.6790547Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.6790661Z               "line": 19
2026-06-21T07:19:09.6790762Z             }
2026-06-21T07:19:09.6790852Z           ]
2026-06-21T07:19:09.6790956Z         },
2026-06-21T07:19:09.6791057Z         "impl": {
2026-06-21T07:19:09.6791172Z           "complete": true,
2026-06-21T07:19:09.6791290Z           "evidence": [
2026-06-21T07:19:09.6791391Z             {
2026-06-21T07:19:09.6791543Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6791648Z               "line": 18
2026-06-21T07:19:09.6791753Z             }
2026-06-21T07:19:09.6791858Z           ]
2026-06-21T07:19:09.6791968Z         },
2026-06-21T07:19:09.6792073Z         "int": {
2026-06-21T07:19:09.6792182Z           "complete": false,
2026-06-21T07:19:09.6792288Z           "evidence": []
2026-06-21T07:19:09.6792379Z         },
2026-06-21T07:19:09.6792482Z         "unit": {
2026-06-21T07:19:09.6792598Z           "complete": true,
2026-06-21T07:19:09.6792712Z           "evidence": [
2026-06-21T07:19:09.6792810Z             {
2026-06-21T07:19:09.6792958Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6793062Z               "line": 1029
2026-06-21T07:19:09.6793165Z             },
2026-06-21T07:19:09.6793271Z             {
2026-06-21T07:19:09.6793419Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6793533Z               "line": 1325
2026-06-21T07:19:09.6793634Z             },
2026-06-21T07:19:09.6793739Z             {
2026-06-21T07:19:09.6793871Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6793987Z               "line": 1337
2026-06-21T07:19:09.6794095Z             },
2026-06-21T07:19:09.6794196Z             {
2026-06-21T07:19:09.6794339Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6794448Z               "line": 1348
2026-06-21T07:19:09.6794554Z             },
2026-06-21T07:19:09.6794663Z             {
2026-06-21T07:19:09.6794801Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6794917Z               "line": 1365
2026-06-21T07:19:09.6795015Z             },
2026-06-21T07:19:09.6795121Z             {
2026-06-21T07:19:09.6795265Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6795378Z               "line": 1379
2026-06-21T07:19:09.6795584Z             },
2026-06-21T07:19:09.6795692Z             {
2026-06-21T07:19:09.6795845Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6795941Z               "line": 1495
2026-06-21T07:19:09.6796049Z             },
2026-06-21T07:19:09.6796240Z             {
2026-06-21T07:19:09.6796393Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6796504Z               "line": 1510
2026-06-21T07:19:09.6796599Z             },
2026-06-21T07:19:09.6796702Z             {
2026-06-21T07:19:09.6796837Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6796946Z               "line": 1621
2026-06-21T07:19:09.6797051Z             },
2026-06-21T07:19:09.6797157Z             {
2026-06-21T07:19:09.6797298Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6797414Z               "line": 1632
2026-06-21T07:19:09.6797514Z             }
2026-06-21T07:19:09.6797604Z           ]
2026-06-21T07:19:09.6797714Z         }
2026-06-21T07:19:09.6797815Z       }
2026-06-21T07:19:09.6797923Z     },
2026-06-21T07:19:09.6798022Z     {
2026-06-21T07:19:09.6798137Z       "id": "REQ-MANIFEST-2",
2026-06-21T07:19:09.6798664Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T07:19:09.6798779Z       "requiredStages": [
2026-06-21T07:19:09.6798888Z         "doc",
2026-06-21T07:19:09.6799079Z         "impl",
2026-06-21T07:19:09.6799183Z         "unit"
2026-06-21T07:19:09.6799288Z       ],
2026-06-21T07:19:09.6799394Z       "stages": {
2026-06-21T07:19:09.6799508Z         "doc": {
2026-06-21T07:19:09.6799608Z           "complete": true,
2026-06-21T07:19:09.6799718Z           "evidence": [
2026-06-21T07:19:09.6799818Z             {
2026-06-21T07:19:09.6799937Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6800047Z               "line": 75
2026-06-21T07:19:09.6800147Z             }
2026-06-21T07:19:09.6800252Z           ]
2026-06-21T07:19:09.6800353Z         },
2026-06-21T07:19:09.6800452Z         "impl": {
2026-06-21T07:19:09.6800567Z           "complete": true,
2026-06-21T07:19:09.6800673Z           "evidence": [
2026-06-21T07:19:09.6800781Z             {
2026-06-21T07:19:09.6800932Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6801041Z               "line": 82
2026-06-21T07:19:09.6801145Z             },
2026-06-21T07:19:09.6801254Z             {
2026-06-21T07:19:09.6801393Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6801502Z               "line": 15
2026-06-21T07:19:09.6801604Z             },
2026-06-21T07:19:09.6801703Z             {
2026-06-21T07:19:09.6801855Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6801956Z               "line": 65
2026-06-21T07:19:09.6802065Z             },
2026-06-21T07:19:09.6802170Z             {
2026-06-21T07:19:09.6802318Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6802428Z               "line": 83
2026-06-21T07:19:09.6802533Z             },
2026-06-21T07:19:09.6802638Z             {
2026-06-21T07:19:09.6802780Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6802887Z               "line": 183
2026-06-21T07:19:09.6803004Z             },
2026-06-21T07:19:09.6803104Z             {
2026-06-21T07:19:09.6803248Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6803357Z               "line": 527
2026-06-21T07:19:09.6803461Z             },
2026-06-21T07:19:09.6803561Z             {
2026-06-21T07:19:09.6803711Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6803821Z               "line": 553
2026-06-21T07:19:09.6803927Z             },
2026-06-21T07:19:09.6804026Z             {
2026-06-21T07:19:09.6804170Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6804270Z               "line": 671
2026-06-21T07:19:09.6804466Z             },
2026-06-21T07:19:09.6804566Z             {
2026-06-21T07:19:09.6804703Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6804809Z               "line": 696
2026-06-21T07:19:09.6804913Z             },
2026-06-21T07:19:09.6805013Z             {
2026-06-21T07:19:09.6805266Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6805371Z               "line": 719
2026-06-21T07:19:09.6805477Z             },
2026-06-21T07:19:09.6805580Z             {
2026-06-21T07:19:09.6805710Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6805825Z               "line": 734
2026-06-21T07:19:09.6805929Z             },
2026-06-21T07:19:09.6806035Z             {
2026-06-21T07:19:09.6806163Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6806276Z               "line": 5567
2026-06-21T07:19:09.6806386Z             },
2026-06-21T07:19:09.6806482Z             {
2026-06-21T07:19:09.6806624Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6806724Z               "line": 5581
2026-06-21T07:19:09.6806830Z             },
2026-06-21T07:19:09.6806938Z             {
2026-06-21T07:19:09.6807064Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6807159Z               "line": 5615
2026-06-21T07:19:09.6807272Z             }
2026-06-21T07:19:09.6807378Z           ]
2026-06-21T07:19:09.6807477Z         },
2026-06-21T07:19:09.6807587Z         "int": {
2026-06-21T07:19:09.6807698Z           "complete": false,
2026-06-21T07:19:09.6807797Z           "evidence": []
2026-06-21T07:19:09.6807906Z         },
2026-06-21T07:19:09.6808003Z         "unit": {
2026-06-21T07:19:09.6808107Z           "complete": true,
2026-06-21T07:19:09.6808216Z           "evidence": [
2026-06-21T07:19:09.6808313Z             {
2026-06-21T07:19:09.6808459Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.6808568Z               "line": 921
2026-06-21T07:19:09.6808673Z             },
2026-06-21T07:19:09.6808771Z             {
2026-06-21T07:19:09.6808924Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6809129Z               "line": 211
2026-06-21T07:19:09.6809229Z             },
2026-06-21T07:19:09.6809329Z             {
2026-06-21T07:19:09.6809476Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6809592Z               "line": 272
2026-06-21T07:19:09.6809696Z             },
2026-06-21T07:19:09.6809801Z             {
2026-06-21T07:19:09.6809945Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6810054Z               "line": 313
2026-06-21T07:19:09.6810158Z             },
2026-06-21T07:19:09.6810265Z             {
2026-06-21T07:19:09.6810402Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6810502Z               "line": 325
2026-06-21T07:19:09.6810612Z             },
2026-06-21T07:19:09.6810712Z             {
2026-06-21T07:19:09.6810856Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6810969Z               "line": 336
2026-06-21T07:19:09.6811069Z             },
2026-06-21T07:19:09.6811166Z             {
2026-06-21T07:19:09.6811303Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6811407Z               "line": 345
2026-06-21T07:19:09.6811512Z             },
2026-06-21T07:19:09.6811620Z             {
2026-06-21T07:19:09.6811766Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6811877Z               "line": 361
2026-06-21T07:19:09.6811972Z             },
2026-06-21T07:19:09.6812071Z             {
2026-06-21T07:19:09.6812211Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6812315Z               "line": 444
2026-06-21T07:19:09.6812425Z             },
2026-06-21T07:19:09.6812530Z             {
2026-06-21T07:19:09.6812668Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6812773Z               "line": 958
2026-06-21T07:19:09.6812973Z             },
2026-06-21T07:19:09.6813074Z             {
2026-06-21T07:19:09.6813216Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6813321Z               "line": 982
2026-06-21T07:19:09.6813428Z             },
2026-06-21T07:19:09.6813531Z             {
2026-06-21T07:19:09.6813790Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6813898Z               "line": 1008
2026-06-21T07:19:09.6814002Z             },
2026-06-21T07:19:09.6814107Z             {
2026-06-21T07:19:09.6814239Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6814353Z               "line": 1027
2026-06-21T07:19:09.6814459Z             },
2026-06-21T07:19:09.6814558Z             {
2026-06-21T07:19:09.6814701Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6814811Z               "line": 1058
2026-06-21T07:19:09.6814915Z             },
2026-06-21T07:19:09.6815016Z             {
2026-06-21T07:19:09.6815168Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.6815272Z               "line": 309
2026-06-21T07:19:09.6815378Z             },
2026-06-21T07:19:09.6815478Z             {
2026-06-21T07:19:09.6815612Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.6815722Z               "line": 606
2026-06-21T07:19:09.6815817Z             },
2026-06-21T07:19:09.6815912Z             {
2026-06-21T07:19:09.6816032Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6816131Z               "line": 8610
2026-06-21T07:19:09.6816236Z             },
2026-06-21T07:19:09.6816342Z             {
2026-06-21T07:19:09.6816469Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6816580Z               "line": 9558
2026-06-21T07:19:09.6816686Z             }
2026-06-21T07:19:09.6816784Z           ]
2026-06-21T07:19:09.6816874Z         }
2026-06-21T07:19:09.6816974Z       }
2026-06-21T07:19:09.6817080Z     },
2026-06-21T07:19:09.6817184Z     {
2026-06-21T07:19:09.6817304Z       "id": "REQ-MANIFEST-3",
2026-06-21T07:19:09.6817971Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T07:19:09.6818100Z       "requiredStages": [
2026-06-21T07:19:09.6818205Z         "doc",
2026-06-21T07:19:09.6818301Z         "impl",
2026-06-21T07:19:09.6818405Z         "unit"
2026-06-21T07:19:09.6818500Z       ],
2026-06-21T07:19:09.6818611Z       "stages": {
2026-06-21T07:19:09.6818709Z         "doc": {
2026-06-21T07:19:09.6818815Z           "complete": true,
2026-06-21T07:19:09.6818916Z           "evidence": [
2026-06-21T07:19:09.6819109Z             {
2026-06-21T07:19:09.6819229Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6819332Z               "line": 81
2026-06-21T07:19:09.6819431Z             }
2026-06-21T07:19:09.6819536Z           ]
2026-06-21T07:19:09.6819633Z         },
2026-06-21T07:19:09.6819755Z         "impl": {
2026-06-21T07:19:09.6819861Z           "complete": true,
2026-06-21T07:19:09.6819961Z           "evidence": [
2026-06-21T07:19:09.6820070Z             {
2026-06-21T07:19:09.6820219Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6820323Z               "line": 92
2026-06-21T07:19:09.6820428Z             },
2026-06-21T07:19:09.6820538Z             {
2026-06-21T07:19:09.6820685Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6820796Z               "line": 101
2026-06-21T07:19:09.6820904Z             },
2026-06-21T07:19:09.6821000Z             {
2026-06-21T07:19:09.6821144Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6821247Z               "line": 132
2026-06-21T07:19:09.6821353Z             },
2026-06-21T07:19:09.6821455Z             {
2026-06-21T07:19:09.6821596Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6821712Z               "line": 577
2026-06-21T07:19:09.6821915Z             },
2026-06-21T07:19:09.6822019Z             {
2026-06-21T07:19:09.6822166Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6822274Z               "line": 633
2026-06-21T07:19:09.6822379Z             },
2026-06-21T07:19:09.6822466Z             {
2026-06-21T07:19:09.6822690Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6822799Z               "line": 5628
2026-06-21T07:19:09.6822904Z             },
2026-06-21T07:19:09.6823009Z             {
2026-06-21T07:19:09.6823128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6823237Z               "line": 5654
2026-06-21T07:19:09.6823338Z             }
2026-06-21T07:19:09.6823447Z           ]
2026-06-21T07:19:09.6823548Z         },
2026-06-21T07:19:09.6823653Z         "int": {
2026-06-21T07:19:09.6823758Z           "complete": false,
2026-06-21T07:19:09.6823872Z           "evidence": []
2026-06-21T07:19:09.6823978Z         },
2026-06-21T07:19:09.6824073Z         "unit": {
2026-06-21T07:19:09.6824192Z           "complete": true,
2026-06-21T07:19:09.6824297Z           "evidence": [
2026-06-21T07:19:09.6824406Z             {
2026-06-21T07:19:09.6824547Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6824663Z               "line": 371
2026-06-21T07:19:09.6824765Z             },
2026-06-21T07:19:09.6824869Z             {
2026-06-21T07:19:09.6825028Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6825132Z               "line": 429
2026-06-21T07:19:09.6825233Z             },
2026-06-21T07:19:09.6825333Z             {
2026-06-21T07:19:09.6825480Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6825586Z               "line": 1082
2026-06-21T07:19:09.6825691Z             },
2026-06-21T07:19:09.6825795Z             {
2026-06-21T07:19:09.6825920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6826029Z               "line": 8703
2026-06-21T07:19:09.6826133Z             }
2026-06-21T07:19:09.6826235Z           ]
2026-06-21T07:19:09.6826343Z         }
2026-06-21T07:19:09.6826448Z       }
2026-06-21T07:19:09.6826550Z     },
2026-06-21T07:19:09.6826653Z     {
2026-06-21T07:19:09.6826773Z       "id": "REQ-MANIFEST-4",
2026-06-21T07:19:09.6827491Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T07:19:09.6827617Z       "requiredStages": [
2026-06-21T07:19:09.6827724Z         "doc",
2026-06-21T07:19:09.6827831Z         "impl",
2026-06-21T07:19:09.6827935Z         "unit"
2026-06-21T07:19:09.6828035Z       ],
2026-06-21T07:19:09.6828141Z       "stages": {
2026-06-21T07:19:09.6828241Z         "doc": {
2026-06-21T07:19:09.6828350Z           "complete": true,
2026-06-21T07:19:09.6828455Z           "evidence": [
2026-06-21T07:19:09.6828555Z             {
2026-06-21T07:19:09.6828674Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6828775Z               "line": 88
2026-06-21T07:19:09.6828875Z             }
2026-06-21T07:19:09.6829051Z           ]
2026-06-21T07:19:09.6829157Z         },
2026-06-21T07:19:09.6829265Z         "impl": {
2026-06-21T07:19:09.6829371Z           "complete": true,
2026-06-21T07:19:09.6829490Z           "evidence": [
2026-06-21T07:19:09.6829584Z             {
2026-06-21T07:19:09.6829736Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6829841Z               "line": 100
2026-06-21T07:19:09.6829944Z             },
2026-06-21T07:19:09.6830044Z             {
2026-06-21T07:19:09.6830188Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6830301Z               "line": 183
2026-06-21T07:19:09.6830397Z             },
2026-06-21T07:19:09.6830502Z             {
2026-06-21T07:19:09.6830649Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6830751Z               "line": 83
2026-06-21T07:19:09.6830954Z             },
2026-06-21T07:19:09.6831056Z             {
2026-06-21T07:19:09.6831203Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6831312Z               "line": 629
2026-06-21T07:19:09.6831409Z             },
2026-06-21T07:19:09.6831518Z             {
2026-06-21T07:19:09.6831752Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6831861Z               "line": 654
2026-06-21T07:19:09.6831962Z             }
2026-06-21T07:19:09.6832067Z           ]
2026-06-21T07:19:09.6832161Z         },
2026-06-21T07:19:09.6832272Z         "int": {
2026-06-21T07:19:09.6832391Z           "complete": false,
2026-06-21T07:19:09.6832489Z           "evidence": []
2026-06-21T07:19:09.6832599Z         },
2026-06-21T07:19:09.6832703Z         "unit": {
2026-06-21T07:19:09.6832811Z           "complete": true,
2026-06-21T07:19:09.6832916Z           "evidence": [
2026-06-21T07:19:09.6833012Z             {
2026-06-21T07:19:09.6833159Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6833274Z               "line": 1445
2026-06-21T07:19:09.6833374Z             },
2026-06-21T07:19:09.6833478Z             {
2026-06-21T07:19:09.6833627Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6833737Z               "line": 1478
2026-06-21T07:19:09.6833845Z             },
2026-06-21T07:19:09.6833947Z             {
2026-06-21T07:19:09.6834089Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.6834199Z               "line": 988
2026-06-21T07:19:09.6834299Z             }
2026-06-21T07:19:09.6834399Z           ]
2026-06-21T07:19:09.6834489Z         }
2026-06-21T07:19:09.6834581Z       }
2026-06-21T07:19:09.6834684Z     },
2026-06-21T07:19:09.6834785Z     {
2026-06-21T07:19:09.6834906Z       "id": "REQ-MANIFEST-5",
2026-06-21T07:19:09.6837852Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T07:19:09.6837970Z       "requiredStages": [
2026-06-21T07:19:09.6838081Z         "doc",
2026-06-21T07:19:09.6841020Z         "impl",
2026-06-21T07:19:09.6841171Z         "unit"
2026-06-21T07:19:09.6841268Z       ],
2026-06-21T07:19:09.6841372Z       "stages": {
2026-06-21T07:19:09.6841481Z         "doc": {
2026-06-21T07:19:09.6841597Z           "complete": true,
2026-06-21T07:19:09.6841710Z           "evidence": [
2026-06-21T07:19:09.6841810Z             {
2026-06-21T07:19:09.6841940Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6842054Z               "line": 83
2026-06-21T07:19:09.6842153Z             }
2026-06-21T07:19:09.6842260Z           ]
2026-06-21T07:19:09.6842354Z         },
2026-06-21T07:19:09.6842454Z         "impl": {
2026-06-21T07:19:09.6842565Z           "complete": true,
2026-06-21T07:19:09.6842673Z           "evidence": [
2026-06-21T07:19:09.6842773Z             {
2026-06-21T07:19:09.6842928Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6843030Z               "line": 120
2026-06-21T07:19:09.6843130Z             }
2026-06-21T07:19:09.6843240Z           ]
2026-06-21T07:19:09.6843333Z         },
2026-06-21T07:19:09.6843577Z         "int": {
2026-06-21T07:19:09.6843695Z           "complete": false,
2026-06-21T07:19:09.6843805Z           "evidence": []
2026-06-21T07:19:09.6843906Z         },
2026-06-21T07:19:09.6844010Z         "unit": {
2026-06-21T07:19:09.6844120Z           "complete": true,
2026-06-21T07:19:09.6844315Z           "evidence": [
2026-06-21T07:19:09.6844420Z             {
2026-06-21T07:19:09.6844568Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T07:19:09.6844672Z               "line": 404
2026-06-21T07:19:09.6844779Z             },
2026-06-21T07:19:09.6844883Z             {
2026-06-21T07:19:09.6845035Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6845141Z               "line": 1155
2026-06-21T07:19:09.6845244Z             },
2026-06-21T07:19:09.6845345Z             {
2026-06-21T07:19:09.6845499Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6845611Z               "line": 1184
2026-06-21T07:19:09.6845716Z             },
2026-06-21T07:19:09.6845821Z             {
2026-06-21T07:19:09.6845966Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6846081Z               "line": 1224
2026-06-21T07:19:09.6846187Z             },
2026-06-21T07:19:09.6846286Z             {
2026-06-21T07:19:09.6846439Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6846548Z               "line": 1239
2026-06-21T07:19:09.6846657Z             }
2026-06-21T07:19:09.6846754Z           ]
2026-06-21T07:19:09.6846858Z         }
2026-06-21T07:19:09.6846958Z       }
2026-06-21T07:19:09.6847055Z     },
2026-06-21T07:19:09.6847158Z     {
2026-06-21T07:19:09.6847263Z       "id": "REQ-MANIFEST-6",
2026-06-21T07:19:09.6849610Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T07:19:09.6849752Z       "requiredStages": [
2026-06-21T07:19:09.6849851Z         "doc",
2026-06-21T07:19:09.6849962Z         "unit"
2026-06-21T07:19:09.6850071Z       ],
2026-06-21T07:19:09.6850166Z       "stages": {
2026-06-21T07:19:09.6850272Z         "doc": {
2026-06-21T07:19:09.6850376Z           "complete": true,
2026-06-21T07:19:09.6850491Z           "evidence": [
2026-06-21T07:19:09.6850592Z             {
2026-06-21T07:19:09.6850719Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6850832Z               "line": 141
2026-06-21T07:19:09.6850933Z             }
2026-06-21T07:19:09.6851031Z           ]
2026-06-21T07:19:09.6851135Z         },
2026-06-21T07:19:09.6851241Z         "impl": {
2026-06-21T07:19:09.6851360Z           "complete": false,
2026-06-21T07:19:09.6851469Z           "evidence": []
2026-06-21T07:19:09.6851575Z         },
2026-06-21T07:19:09.6851670Z         "int": {
2026-06-21T07:19:09.6851793Z           "complete": false,
2026-06-21T07:19:09.6851890Z           "evidence": []
2026-06-21T07:19:09.6851989Z         },
2026-06-21T07:19:09.6852094Z         "unit": {
2026-06-21T07:19:09.6852209Z           "complete": true,
2026-06-21T07:19:09.6852313Z           "evidence": [
2026-06-21T07:19:09.6852414Z             {
2026-06-21T07:19:09.6852566Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.6852676Z               "line": 1261
2026-06-21T07:19:09.6852782Z             }
2026-06-21T07:19:09.6852881Z           ]
2026-06-21T07:19:09.6852981Z         }
2026-06-21T07:19:09.6853082Z       }
2026-06-21T07:19:09.6853182Z     },
2026-06-21T07:19:09.6853401Z     {
2026-06-21T07:19:09.6853520Z       "id": "REQ-MANIFEST-7",
2026-06-21T07:19:09.6856598Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T07:19:09.6856971Z       "requiredStages": [
2026-06-21T07:19:09.6857099Z         "doc",
2026-06-21T07:19:09.6857208Z         "impl",
2026-06-21T07:19:09.6857314Z         "unit"
2026-06-21T07:19:09.6857409Z       ],
2026-06-21T07:19:09.6857518Z       "stages": {
2026-06-21T07:19:09.6857624Z         "doc": {
2026-06-21T07:19:09.6857728Z           "complete": true,
2026-06-21T07:19:09.6857838Z           "evidence": [
2026-06-21T07:19:09.6857944Z             {
2026-06-21T07:19:09.6858063Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.6858167Z               "line": 35
2026-06-21T07:19:09.6858263Z             }
2026-06-21T07:19:09.6858362Z           ]
2026-06-21T07:19:09.6858458Z         },
2026-06-21T07:19:09.6858559Z         "impl": {
2026-06-21T07:19:09.6858667Z           "complete": true,
2026-06-21T07:19:09.6858772Z           "evidence": [
2026-06-21T07:19:09.6858869Z             {
2026-06-21T07:19:09.6859100Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.6859215Z               "line": 54
2026-06-21T07:19:09.6859315Z             }
2026-06-21T07:19:09.6859415Z           ]
2026-06-21T07:19:09.6859515Z         },
2026-06-21T07:19:09.6859621Z         "int": {
2026-06-21T07:19:09.6859734Z           "complete": false,
2026-06-21T07:19:09.6859845Z           "evidence": []
2026-06-21T07:19:09.6859950Z         },
2026-06-21T07:19:09.6860044Z         "unit": {
2026-06-21T07:19:09.6860160Z           "complete": true,
2026-06-21T07:19:09.6860264Z           "evidence": [
2026-06-21T07:19:09.6860368Z             {
2026-06-21T07:19:09.6860522Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6860631Z               "line": 1638
2026-06-21T07:19:09.6860731Z             }
2026-06-21T07:19:09.6860832Z           ]
2026-06-21T07:19:09.6860936Z         }
2026-06-21T07:19:09.6861032Z       }
2026-06-21T07:19:09.6861133Z     },
2026-06-21T07:19:09.6861231Z     {
2026-06-21T07:19:09.6861345Z       "id": "REQ-MANIFEST-8",
2026-06-21T07:19:09.6863613Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T07:19:09.6863742Z       "requiredStages": [
2026-06-21T07:19:09.6863846Z         "doc",
2026-06-21T07:19:09.6863952Z         "impl",
2026-06-21T07:19:09.6864052Z         "unit",
2026-06-21T07:19:09.6864156Z         "int"
2026-06-21T07:19:09.6864360Z       ],
2026-06-21T07:19:09.6864473Z       "stages": {
2026-06-21T07:19:09.6864577Z         "doc": {
2026-06-21T07:19:09.6864693Z           "complete": true,
2026-06-21T07:19:09.6864797Z           "evidence": [
2026-06-21T07:19:09.6864897Z             {
2026-06-21T07:19:09.6865022Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.6865226Z               "line": 184
2026-06-21T07:19:09.6865327Z             },
2026-06-21T07:19:09.6865426Z             {
2026-06-21T07:19:09.6865545Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.6865651Z               "line": 46
2026-06-21T07:19:09.6865751Z             }
2026-06-21T07:19:09.6865841Z           ]
2026-06-21T07:19:09.6865942Z         },
2026-06-21T07:19:09.6866050Z         "impl": {
2026-06-21T07:19:09.6866165Z           "complete": true,
2026-06-21T07:19:09.6866261Z           "evidence": [
2026-06-21T07:19:09.6866365Z             {
2026-06-21T07:19:09.6866514Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6866633Z               "line": 222
2026-06-21T07:19:09.6866726Z             },
2026-06-21T07:19:09.6866831Z             {
2026-06-21T07:19:09.6866978Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6867086Z               "line": 306
2026-06-21T07:19:09.6867192Z             }
2026-06-21T07:19:09.6867288Z           ]
2026-06-21T07:19:09.6867396Z         },
2026-06-21T07:19:09.6867492Z         "int": {
2026-06-21T07:19:09.6867597Z           "complete": true,
2026-06-21T07:19:09.6867701Z           "evidence": [
2026-06-21T07:19:09.6867802Z             {
2026-06-21T07:19:09.6867955Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T07:19:09.6868064Z               "line": 18
2026-06-21T07:19:09.6868170Z             }
2026-06-21T07:19:09.6868269Z           ]
2026-06-21T07:19:09.6868369Z         },
2026-06-21T07:19:09.6868475Z         "unit": {
2026-06-21T07:19:09.6868584Z           "complete": true,
2026-06-21T07:19:09.6868684Z           "evidence": [
2026-06-21T07:19:09.6868781Z             {
2026-06-21T07:19:09.6868926Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.6869119Z               "line": 1656
2026-06-21T07:19:09.6869218Z             },
2026-06-21T07:19:09.6869323Z             {
2026-06-21T07:19:09.6869467Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6869575Z               "line": 316
2026-06-21T07:19:09.6869679Z             },
2026-06-21T07:19:09.6869780Z             {
2026-06-21T07:19:09.6869923Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6870027Z               "line": 332
2026-06-21T07:19:09.6870124Z             },
2026-06-21T07:19:09.6870223Z             {
2026-06-21T07:19:09.6870367Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.6870462Z               "line": 345
2026-06-21T07:19:09.6870566Z             },
2026-06-21T07:19:09.6870662Z             {
2026-06-21T07:19:09.6870805Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6870919Z               "line": 422
2026-06-21T07:19:09.6871020Z             },
2026-06-21T07:19:09.6871124Z             {
2026-06-21T07:19:09.6871258Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T07:19:09.6871369Z               "line": 436
2026-06-21T07:19:09.6871477Z             }
2026-06-21T07:19:09.6871563Z           ]
2026-06-21T07:19:09.6871659Z         }
2026-06-21T07:19:09.6871754Z       }
2026-06-21T07:19:09.6871858Z     },
2026-06-21T07:19:09.6871953Z     {
2026-06-21T07:19:09.6872058Z       "id": "REQ-MESH-1",
2026-06-21T07:19:09.6874207Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T07:19:09.6874526Z       "requiredStages": [
2026-06-21T07:19:09.6874631Z         "impl",
2026-06-21T07:19:09.6874730Z         "unit",
2026-06-21T07:19:09.6874834Z         "int"
2026-06-21T07:19:09.6874934Z       ],
2026-06-21T07:19:09.6875042Z       "stages": {
2026-06-21T07:19:09.6875147Z         "doc": {
2026-06-21T07:19:09.6875262Z           "complete": false,
2026-06-21T07:19:09.6875371Z           "evidence": []
2026-06-21T07:19:09.6875476Z         },
2026-06-21T07:19:09.6875582Z         "impl": {
2026-06-21T07:19:09.6875690Z           "complete": true,
2026-06-21T07:19:09.6875795Z           "evidence": [
2026-06-21T07:19:09.6875905Z             {
2026-06-21T07:19:09.6876052Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.6876173Z               "line": 972
2026-06-21T07:19:09.6876272Z             },
2026-06-21T07:19:09.6876372Z             {
2026-06-21T07:19:09.6876525Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6876634Z               "line": 38
2026-06-21T07:19:09.6876745Z             },
2026-06-21T07:19:09.6876845Z             {
2026-06-21T07:19:09.6876997Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6877103Z               "line": 161
2026-06-21T07:19:09.6877207Z             },
2026-06-21T07:19:09.6877301Z             {
2026-06-21T07:19:09.6877449Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6877562Z               "line": 206
2026-06-21T07:19:09.6877656Z             },
2026-06-21T07:19:09.6877757Z             {
2026-06-21T07:19:09.6877905Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.6878014Z               "line": 57
2026-06-21T07:19:09.6878125Z             },
2026-06-21T07:19:09.6878224Z             {
2026-06-21T07:19:09.6878382Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6878491Z               "line": 24
2026-06-21T07:19:09.6878586Z             },
2026-06-21T07:19:09.6878692Z             {
2026-06-21T07:19:09.6878843Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6879021Z               "line": 142
2026-06-21T07:19:09.6879121Z             },
2026-06-21T07:19:09.6879221Z             {
2026-06-21T07:19:09.6879369Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6879478Z               "line": 162
2026-06-21T07:19:09.6879578Z             }
2026-06-21T07:19:09.6879674Z           ]
2026-06-21T07:19:09.6879764Z         },
2026-06-21T07:19:09.6879869Z         "int": {
2026-06-21T07:19:09.6879975Z           "complete": true,
2026-06-21T07:19:09.6880084Z           "evidence": [
2026-06-21T07:19:09.6880192Z             {
2026-06-21T07:19:09.6880360Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T07:19:09.6880469Z               "line": 67
2026-06-21T07:19:09.6880573Z             },
2026-06-21T07:19:09.6880670Z             {
2026-06-21T07:19:09.6880821Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T07:19:09.6880927Z               "line": 93
2026-06-21T07:19:09.6881036Z             },
2026-06-21T07:19:09.6881136Z             {
2026-06-21T07:19:09.6881280Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T07:19:09.6881389Z               "line": 117
2026-06-21T07:19:09.6881488Z             },
2026-06-21T07:19:09.6881595Z             {
2026-06-21T07:19:09.6881742Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T07:19:09.6881842Z               "line": 134
2026-06-21T07:19:09.6881938Z             }
2026-06-21T07:19:09.6882027Z           ]
2026-06-21T07:19:09.6882132Z         },
2026-06-21T07:19:09.6882234Z         "unit": {
2026-06-21T07:19:09.6882447Z           "complete": true,
2026-06-21T07:19:09.6882546Z           "evidence": [
2026-06-21T07:19:09.6882650Z             {
2026-06-21T07:19:09.6882801Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.6882902Z               "line": 427
2026-06-21T07:19:09.6883097Z             },
2026-06-21T07:19:09.6883198Z             {
2026-06-21T07:19:09.6883355Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6883464Z               "line": 376
2026-06-21T07:19:09.6883551Z             },
2026-06-21T07:19:09.6883646Z             {
2026-06-21T07:19:09.6883794Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6883894Z               "line": 412
2026-06-21T07:19:09.6883994Z             },
2026-06-21T07:19:09.6884098Z             {
2026-06-21T07:19:09.6884256Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6884361Z               "line": 427
2026-06-21T07:19:09.6884467Z             },
2026-06-21T07:19:09.6884566Z             {
2026-06-21T07:19:09.6884718Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6884825Z               "line": 438
2026-06-21T07:19:09.6884923Z             },
2026-06-21T07:19:09.6885029Z             {
2026-06-21T07:19:09.6885177Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6885280Z               "line": 449
2026-06-21T07:19:09.6885385Z             },
2026-06-21T07:19:09.6885490Z             {
2026-06-21T07:19:09.6885640Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6885745Z               "line": 460
2026-06-21T07:19:09.6885851Z             },
2026-06-21T07:19:09.6885945Z             {
2026-06-21T07:19:09.6886103Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6886208Z               "line": 496
2026-06-21T07:19:09.6886312Z             },
2026-06-21T07:19:09.6886409Z             {
2026-06-21T07:19:09.6886565Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6886675Z               "line": 519
2026-06-21T07:19:09.6886766Z             },
2026-06-21T07:19:09.6886861Z             {
2026-06-21T07:19:09.6887009Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6887128Z               "line": 546
2026-06-21T07:19:09.6887233Z             }
2026-06-21T07:19:09.6887329Z           ]
2026-06-21T07:19:09.6887429Z         }
2026-06-21T07:19:09.6887528Z       }
2026-06-21T07:19:09.6887630Z     },
2026-06-21T07:19:09.6887729Z     {
2026-06-21T07:19:09.6887838Z       "id": "REQ-MESH-2",
2026-06-21T07:19:09.6890530Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T07:19:09.6890663Z       "requiredStages": [
2026-06-21T07:19:09.6890771Z         "impl",
2026-06-21T07:19:09.6890876Z         "unit",
2026-06-21T07:19:09.6890973Z         "int"
2026-06-21T07:19:09.6891076Z       ],
2026-06-21T07:19:09.6891172Z       "stages": {
2026-06-21T07:19:09.6891272Z         "doc": {
2026-06-21T07:19:09.6891381Z           "complete": false,
2026-06-21T07:19:09.6891492Z           "evidence": []
2026-06-21T07:19:09.6891597Z         },
2026-06-21T07:19:09.6891826Z         "impl": {
2026-06-21T07:19:09.6891930Z           "complete": true,
2026-06-21T07:19:09.6892030Z           "evidence": [
2026-06-21T07:19:09.6892126Z             {
2026-06-21T07:19:09.6892273Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.6892378Z               "line": 807
2026-06-21T07:19:09.6892588Z             },
2026-06-21T07:19:09.6892683Z             {
2026-06-21T07:19:09.6892837Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6892940Z               "line": 118
2026-06-21T07:19:09.6893049Z             },
2026-06-21T07:19:09.6893145Z             {
2026-06-21T07:19:09.6893295Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6893400Z               "line": 347
2026-06-21T07:19:09.6893501Z             },
2026-06-21T07:19:09.6893605Z             {
2026-06-21T07:19:09.6893743Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6893853Z               "line": 389
2026-06-21T07:19:09.6893967Z             },
2026-06-21T07:19:09.6894068Z             {
2026-06-21T07:19:09.6894211Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6894325Z               "line": 403
2026-06-21T07:19:09.6894431Z             },
2026-06-21T07:19:09.6894536Z             {
2026-06-21T07:19:09.6894688Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6894788Z               "line": 492
2026-06-21T07:19:09.6894888Z             },
2026-06-21T07:19:09.6894993Z             {
2026-06-21T07:19:09.6895126Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6895240Z               "line": 507
2026-06-21T07:19:09.6895346Z             },
2026-06-21T07:19:09.6895455Z             {
2026-06-21T07:19:09.6895603Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6895709Z               "line": 534
2026-06-21T07:19:09.6895817Z             },
2026-06-21T07:19:09.6895916Z             {
2026-06-21T07:19:09.6896083Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6896177Z               "line": 207
2026-06-21T07:19:09.6896286Z             },
2026-06-21T07:19:09.6896392Z             {
2026-06-21T07:19:09.6896534Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6896655Z               "line": 755
2026-06-21T07:19:09.6896754Z             },
2026-06-21T07:19:09.6896863Z             {
2026-06-21T07:19:09.6897002Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6897116Z               "line": 816
2026-06-21T07:19:09.6897221Z             },
2026-06-21T07:19:09.6897322Z             {
2026-06-21T07:19:09.6897469Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6897579Z               "line": 869
2026-06-21T07:19:09.6897683Z             },
2026-06-21T07:19:09.6897788Z             {
2026-06-21T07:19:09.6897937Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6898045Z               "line": 891
2026-06-21T07:19:09.6898151Z             },
2026-06-21T07:19:09.6898257Z             {
2026-06-21T07:19:09.6898398Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6898507Z               "line": 122
2026-06-21T07:19:09.6898607Z             },
2026-06-21T07:19:09.6898715Z             {
2026-06-21T07:19:09.6898858Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6899039Z               "line": 44
2026-06-21T07:19:09.6899139Z             },
2026-06-21T07:19:09.6899245Z             {
2026-06-21T07:19:09.6899377Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6899497Z               "line": 184
2026-06-21T07:19:09.6899597Z             },
2026-06-21T07:19:09.6899701Z             {
2026-06-21T07:19:09.6899836Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6899945Z               "line": 211
2026-06-21T07:19:09.6900035Z             },
2026-06-21T07:19:09.6900136Z             {
2026-06-21T07:19:09.6900388Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6900494Z               "line": 251
2026-06-21T07:19:09.6900598Z             },
2026-06-21T07:19:09.6900689Z             {
2026-06-21T07:19:09.6900833Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6901027Z               "line": 275
2026-06-21T07:19:09.6901133Z             },
2026-06-21T07:19:09.6901237Z             {
2026-06-21T07:19:09.6901374Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6901470Z               "line": 289
2026-06-21T07:19:09.6901566Z             },
2026-06-21T07:19:09.6901665Z             {
2026-06-21T07:19:09.6901795Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6901899Z               "line": 300
2026-06-21T07:19:09.6902008Z             },
2026-06-21T07:19:09.6902105Z             {
2026-06-21T07:19:09.6902242Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6902356Z               "line": 313
2026-06-21T07:19:09.6902457Z             }
2026-06-21T07:19:09.6902548Z           ]
2026-06-21T07:19:09.6902647Z         },
2026-06-21T07:19:09.6902749Z         "int": {
2026-06-21T07:19:09.6902852Z           "complete": true,
2026-06-21T07:19:09.6902967Z           "evidence": [
2026-06-21T07:19:09.6903063Z             {
2026-06-21T07:19:09.6903220Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T07:19:09.6903325Z               "line": 116
2026-06-21T07:19:09.6903435Z             },
2026-06-21T07:19:09.6903538Z             {
2026-06-21T07:19:09.6903690Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T07:19:09.6903804Z               "line": 181
2026-06-21T07:19:09.6903903Z             }
2026-06-21T07:19:09.6904003Z           ]
2026-06-21T07:19:09.6904105Z         },
2026-06-21T07:19:09.6904208Z         "unit": {
2026-06-21T07:19:09.6904327Z           "complete": true,
2026-06-21T07:19:09.6904423Z           "evidence": [
2026-06-21T07:19:09.6904527Z             {
2026-06-21T07:19:09.6904681Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6904781Z               "line": 999
2026-06-21T07:19:09.6904885Z             },
2026-06-21T07:19:09.6904991Z             {
2026-06-21T07:19:09.6905147Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6905263Z               "line": 1016
2026-06-21T07:19:09.6905372Z             },
2026-06-21T07:19:09.6905467Z             {
2026-06-21T07:19:09.6905621Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6905724Z               "line": 1024
2026-06-21T07:19:09.6905834Z             },
2026-06-21T07:19:09.6905940Z             {
2026-06-21T07:19:09.6906082Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6906198Z               "line": 1048
2026-06-21T07:19:09.6906293Z             },
2026-06-21T07:19:09.6906396Z             {
2026-06-21T07:19:09.6906553Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.6906675Z               "line": 1499
2026-06-21T07:19:09.6906784Z             },
2026-06-21T07:19:09.6906889Z             {
2026-06-21T07:19:09.6907032Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6907141Z               "line": 347
2026-06-21T07:19:09.6907247Z             },
2026-06-21T07:19:09.6907352Z             {
2026-06-21T07:19:09.6907486Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6907595Z               "line": 370
2026-06-21T07:19:09.6907694Z             },
2026-06-21T07:19:09.6907805Z             {
2026-06-21T07:19:09.6907938Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6908043Z               "line": 407
2026-06-21T07:19:09.6908154Z             },
2026-06-21T07:19:09.6908253Z             {
2026-06-21T07:19:09.6908391Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6908497Z               "line": 431
2026-06-21T07:19:09.6908677Z             },
2026-06-21T07:19:09.6908778Z             {
2026-06-21T07:19:09.6908925Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6909120Z               "line": 483
2026-06-21T07:19:09.6909214Z             },
2026-06-21T07:19:09.6909318Z             {
2026-06-21T07:19:09.6909557Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6909670Z               "line": 499
2026-06-21T07:19:09.6909772Z             },
2026-06-21T07:19:09.6909881Z             {
2026-06-21T07:19:09.6910023Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6910133Z               "line": 514
2026-06-21T07:19:09.6910233Z             },
2026-06-21T07:19:09.6910333Z             {
2026-06-21T07:19:09.6910472Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6910576Z               "line": 531
2026-06-21T07:19:09.6910682Z             }
2026-06-21T07:19:09.6910786Z           ]
2026-06-21T07:19:09.6910882Z         }
2026-06-21T07:19:09.6910992Z       }
2026-06-21T07:19:09.6911078Z     },
2026-06-21T07:19:09.6911172Z     {
2026-06-21T07:19:09.6911277Z       "id": "REQ-MESH-3",
2026-06-21T07:19:09.6913008Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T07:19:09.6913136Z       "requiredStages": [
2026-06-21T07:19:09.6913241Z         "impl",
2026-06-21T07:19:09.6913347Z         "unit",
2026-06-21T07:19:09.6913446Z         "int"
2026-06-21T07:19:09.6913547Z       ],
2026-06-21T07:19:09.6913656Z       "stages": {
2026-06-21T07:19:09.6913770Z         "doc": {
2026-06-21T07:19:09.6913890Z           "complete": false,
2026-06-21T07:19:09.6913995Z           "evidence": []
2026-06-21T07:19:09.6914103Z         },
2026-06-21T07:19:09.6914208Z         "impl": {
2026-06-21T07:19:09.6914312Z           "complete": true,
2026-06-21T07:19:09.6914429Z           "evidence": [
2026-06-21T07:19:09.6914530Z             {
2026-06-21T07:19:09.6914679Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6914782Z               "line": 641
2026-06-21T07:19:09.6914892Z             }
2026-06-21T07:19:09.6914993Z           ]
2026-06-21T07:19:09.6915092Z         },
2026-06-21T07:19:09.6915193Z         "int": {
2026-06-21T07:19:09.6915307Z           "complete": true,
2026-06-21T07:19:09.6915406Z           "evidence": [
2026-06-21T07:19:09.6915508Z             {
2026-06-21T07:19:09.6915665Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T07:19:09.6915770Z               "line": 373
2026-06-21T07:19:09.6915870Z             },
2026-06-21T07:19:09.6915975Z             {
2026-06-21T07:19:09.6916113Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T07:19:09.6916228Z               "line": 436
2026-06-21T07:19:09.6916328Z             }
2026-06-21T07:19:09.6916433Z           ]
2026-06-21T07:19:09.6916548Z         },
2026-06-21T07:19:09.6916637Z         "unit": {
2026-06-21T07:19:09.6916753Z           "complete": true,
2026-06-21T07:19:09.6916858Z           "evidence": [
2026-06-21T07:19:09.6916965Z             {
2026-06-21T07:19:09.6917113Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.6917222Z               "line": 910
2026-06-21T07:19:09.6917330Z             }
2026-06-21T07:19:09.6917430Z           ]
2026-06-21T07:19:09.6917536Z         }
2026-06-21T07:19:09.6917635Z       }
2026-06-21T07:19:09.6917741Z     },
2026-06-21T07:19:09.6917845Z     {
2026-06-21T07:19:09.6917949Z       "id": "REQ-MESH-4",
2026-06-21T07:19:09.6920283Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T07:19:09.6920603Z       "requiredStages": [
2026-06-21T07:19:09.6920708Z         "impl",
2026-06-21T07:19:09.6920807Z         "unit",
2026-06-21T07:19:09.6920908Z         "int"
2026-06-21T07:19:09.6921013Z       ],
2026-06-21T07:19:09.6921108Z       "stages": {
2026-06-21T07:19:09.6921213Z         "doc": {
2026-06-21T07:19:09.6921333Z           "complete": false,
2026-06-21T07:19:09.6921432Z           "evidence": []
2026-06-21T07:19:09.6921542Z         },
2026-06-21T07:19:09.6921648Z         "impl": {
2026-06-21T07:19:09.6921761Z           "complete": true,
2026-06-21T07:19:09.6921867Z           "evidence": [
2026-06-21T07:19:09.6921986Z             {
2026-06-21T07:19:09.6922148Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.6922254Z               "line": 33
2026-06-21T07:19:09.6922361Z             },
2026-06-21T07:19:09.6922465Z             {
2026-06-21T07:19:09.6922624Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6922728Z               "line": 68
2026-06-21T07:19:09.6922833Z             },
2026-06-21T07:19:09.6922939Z             {
2026-06-21T07:19:09.6923086Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6923192Z               "line": 111
2026-06-21T07:19:09.6923291Z             },
2026-06-21T07:19:09.6923400Z             {
2026-06-21T07:19:09.6923540Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6923644Z               "line": 462
2026-06-21T07:19:09.6923744Z             },
2026-06-21T07:19:09.6923850Z             {
2026-06-21T07:19:09.6924002Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6924112Z               "line": 711
2026-06-21T07:19:09.6924216Z             },
2026-06-21T07:19:09.6924316Z             {
2026-06-21T07:19:09.6924460Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6924560Z               "line": 725
2026-06-21T07:19:09.6924663Z             },
2026-06-21T07:19:09.6924768Z             {
2026-06-21T07:19:09.6924900Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.6925004Z               "line": 132
2026-06-21T07:19:09.6925104Z             },
2026-06-21T07:19:09.6925200Z             {
2026-06-21T07:19:09.6925342Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6925448Z               "line": 26
2026-06-21T07:19:09.6925548Z             },
2026-06-21T07:19:09.6925652Z             {
2026-06-21T07:19:09.6925806Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6925910Z               "line": 97
2026-06-21T07:19:09.6926020Z             },
2026-06-21T07:19:09.6926125Z             {
2026-06-21T07:19:09.6926268Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6926378Z               "line": 119
2026-06-21T07:19:09.6926468Z             },
2026-06-21T07:19:09.6926573Z             {
2026-06-21T07:19:09.6926717Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6926831Z               "line": 82
2026-06-21T07:19:09.6926935Z             },
2026-06-21T07:19:09.6927032Z             {
2026-06-21T07:19:09.6927173Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6927284Z               "line": 111
2026-06-21T07:19:09.6927389Z             },
2026-06-21T07:19:09.6927582Z             {
2026-06-21T07:19:09.6927730Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6927838Z               "line": 232
2026-06-21T07:19:09.6927938Z             },
2026-06-21T07:19:09.6928049Z             {
2026-06-21T07:19:09.6928185Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6928368Z               "line": 245
2026-06-21T07:19:09.6928472Z             },
2026-06-21T07:19:09.6928577Z             {
2026-06-21T07:19:09.6928706Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6928815Z               "line": 4665
2026-06-21T07:19:09.6928925Z             }
2026-06-21T07:19:09.6929121Z           ]
2026-06-21T07:19:09.6929225Z         },
2026-06-21T07:19:09.6929326Z         "int": {
2026-06-21T07:19:09.6929445Z           "complete": true,
2026-06-21T07:19:09.6929550Z           "evidence": [
2026-06-21T07:19:09.6929651Z             {
2026-06-21T07:19:09.6929802Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T07:19:09.6929908Z               "line": 98
2026-06-21T07:19:09.6930003Z             },
2026-06-21T07:19:09.6930097Z             {
2026-06-21T07:19:09.6930245Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T07:19:09.6930348Z               "line": 140
2026-06-21T07:19:09.6930457Z             }
2026-06-21T07:19:09.6930557Z           ]
2026-06-21T07:19:09.6930659Z         },
2026-06-21T07:19:09.6930757Z         "unit": {
2026-06-21T07:19:09.6930863Z           "complete": true,
2026-06-21T07:19:09.6930977Z           "evidence": [
2026-06-21T07:19:09.6931081Z             {
2026-06-21T07:19:09.6931235Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.6931344Z               "line": 178
2026-06-21T07:19:09.6931444Z             },
2026-06-21T07:19:09.6934371Z             {
2026-06-21T07:19:09.6934571Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.6934691Z               "line": 242
2026-06-21T07:19:09.6934796Z             },
2026-06-21T07:19:09.6934895Z             {
2026-06-21T07:19:09.6935050Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6935157Z               "line": 1079
2026-06-21T07:19:09.6935261Z             },
2026-06-21T07:19:09.6935367Z             {
2026-06-21T07:19:09.6935536Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6935640Z               "line": 1109
2026-06-21T07:19:09.6935727Z             },
2026-06-21T07:19:09.6935831Z             {
2026-06-21T07:19:09.6935989Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T07:19:09.6936099Z               "line": 1129
2026-06-21T07:19:09.6936203Z             },
2026-06-21T07:19:09.6936304Z             {
2026-06-21T07:19:09.6936465Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T07:19:09.6936575Z               "line": 602
2026-06-21T07:19:09.6936676Z             },
2026-06-21T07:19:09.6936766Z             {
2026-06-21T07:19:09.6936923Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6937033Z               "line": 148
2026-06-21T07:19:09.6937133Z             },
2026-06-21T07:19:09.6937238Z             {
2026-06-21T07:19:09.6937381Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6937491Z               "line": 169
2026-06-21T07:19:09.6937592Z             },
2026-06-21T07:19:09.6937700Z             {
2026-06-21T07:19:09.6937849Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6937954Z               "line": 181
2026-06-21T07:19:09.6938053Z             },
2026-06-21T07:19:09.6938157Z             {
2026-06-21T07:19:09.6938295Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T07:19:09.6938403Z               "line": 202
2026-06-21T07:19:09.6938507Z             },
2026-06-21T07:19:09.6938609Z             {
2026-06-21T07:19:09.6938746Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6938861Z               "line": 375
2026-06-21T07:19:09.6939191Z             },
2026-06-21T07:19:09.6939295Z             {
2026-06-21T07:19:09.6939442Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.6939543Z               "line": 407
2026-06-21T07:19:09.6939642Z             },
2026-06-21T07:19:09.6939839Z             {
2026-06-21T07:19:09.6939976Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6940081Z               "line": 10052
2026-06-21T07:19:09.6940182Z             }
2026-06-21T07:19:09.6940286Z           ]
2026-06-21T07:19:09.6940386Z         }
2026-06-21T07:19:09.6940488Z       }
2026-06-21T07:19:09.6940592Z     },
2026-06-21T07:19:09.6940695Z     {
2026-06-21T07:19:09.6940800Z       "id": "REQ-MESH-5",
2026-06-21T07:19:09.6942280Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T07:19:09.6942406Z       "requiredStages": [
2026-06-21T07:19:09.6942519Z         "impl",
2026-06-21T07:19:09.6942619Z         "unit"
2026-06-21T07:19:09.6942716Z       ],
2026-06-21T07:19:09.6942819Z       "stages": {
2026-06-21T07:19:09.6942929Z         "doc": {
2026-06-21T07:19:09.6943045Z           "complete": false,
2026-06-21T07:19:09.6943162Z           "evidence": []
2026-06-21T07:19:09.6943258Z         },
2026-06-21T07:19:09.6943364Z         "impl": {
2026-06-21T07:19:09.6943468Z           "complete": true,
2026-06-21T07:19:09.6943577Z           "evidence": [
2026-06-21T07:19:09.6943677Z             {
2026-06-21T07:19:09.6943839Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.6943948Z               "line": 61
2026-06-21T07:19:09.6944054Z             },
2026-06-21T07:19:09.6944158Z             {
2026-06-21T07:19:09.6944312Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.6944421Z               "line": 109
2026-06-21T07:19:09.6944530Z             },
2026-06-21T07:19:09.6944626Z             {
2026-06-21T07:19:09.6944774Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.6944878Z               "line": 104
2026-06-21T07:19:09.6944985Z             },
2026-06-21T07:19:09.6945083Z             {
2026-06-21T07:19:09.6945227Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.6945342Z               "line": 105
2026-06-21T07:19:09.6945446Z             },
2026-06-21T07:19:09.6945551Z             {
2026-06-21T07:19:09.6945707Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6945821Z               "line": 85
2026-06-21T07:19:09.6945922Z             },
2026-06-21T07:19:09.6946030Z             {
2026-06-21T07:19:09.6946186Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6946297Z               "line": 250
2026-06-21T07:19:09.6946387Z             },
2026-06-21T07:19:09.6946491Z             {
2026-06-21T07:19:09.6946635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6946744Z               "line": 314
2026-06-21T07:19:09.6946849Z             },
2026-06-21T07:19:09.6946945Z             {
2026-06-21T07:19:09.6947097Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6947203Z               "line": 767
2026-06-21T07:19:09.6947303Z             },
2026-06-21T07:19:09.6947412Z             {
2026-06-21T07:19:09.6947542Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.6947646Z               "line": 101
2026-06-21T07:19:09.6947741Z             },
2026-06-21T07:19:09.6947833Z             {
2026-06-21T07:19:09.6947979Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6948181Z               "line": 193
2026-06-21T07:19:09.6948284Z             }
2026-06-21T07:19:09.6948385Z           ]
2026-06-21T07:19:09.6948491Z         },
2026-06-21T07:19:09.6948594Z         "int": {
2026-06-21T07:19:09.6948707Z           "complete": false,
2026-06-21T07:19:09.6948822Z           "evidence": []
2026-06-21T07:19:09.6949068Z         },
2026-06-21T07:19:09.6949174Z         "unit": {
2026-06-21T07:19:09.6949292Z           "complete": true,
2026-06-21T07:19:09.6949401Z           "evidence": [
2026-06-21T07:19:09.6949507Z             {
2026-06-21T07:19:09.6949654Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.6949760Z               "line": 1009
2026-06-21T07:19:09.6949860Z             },
2026-06-21T07:19:09.6949964Z             {
2026-06-21T07:19:09.6950098Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T07:19:09.6950207Z               "line": 462
2026-06-21T07:19:09.6950312Z             }
2026-06-21T07:19:09.6950413Z           ]
2026-06-21T07:19:09.6950527Z         }
2026-06-21T07:19:09.6950627Z       }
2026-06-21T07:19:09.6950724Z     },
2026-06-21T07:19:09.6950813Z     {
2026-06-21T07:19:09.6950918Z       "id": "REQ-MESH-6",
2026-06-21T07:19:09.6952206Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T07:19:09.6952327Z       "requiredStages": [
2026-06-21T07:19:09.6952421Z         "impl",
2026-06-21T07:19:09.6952530Z         "unit"
2026-06-21T07:19:09.6952627Z       ],
2026-06-21T07:19:09.6952732Z       "stages": {
2026-06-21T07:19:09.6952822Z         "doc": {
2026-06-21T07:19:09.6952937Z           "complete": false,
2026-06-21T07:19:09.6953042Z           "evidence": []
2026-06-21T07:19:09.6953151Z         },
2026-06-21T07:19:09.6953252Z         "impl": {
2026-06-21T07:19:09.6953366Z           "complete": true,
2026-06-21T07:19:09.6953466Z           "evidence": [
2026-06-21T07:19:09.6953567Z             {
2026-06-21T07:19:09.6953709Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6953818Z               "line": 4181
2026-06-21T07:19:09.6953924Z             }
2026-06-21T07:19:09.6954024Z           ]
2026-06-21T07:19:09.6954127Z         },
2026-06-21T07:19:09.6954228Z         "int": {
2026-06-21T07:19:09.6954343Z           "complete": false,
2026-06-21T07:19:09.6954446Z           "evidence": []
2026-06-21T07:19:09.6954552Z         },
2026-06-21T07:19:09.6954647Z         "unit": {
2026-06-21T07:19:09.6954756Z           "complete": true,
2026-06-21T07:19:09.6954857Z           "evidence": [
2026-06-21T07:19:09.6954962Z             {
2026-06-21T07:19:09.6955090Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6955196Z               "line": 10602
2026-06-21T07:19:09.6955300Z             },
2026-06-21T07:19:09.6955400Z             {
2026-06-21T07:19:09.6955530Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6955634Z               "line": 10629
2026-06-21T07:19:09.6955739Z             },
2026-06-21T07:19:09.6955840Z             {
2026-06-21T07:19:09.6955977Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6956087Z               "line": 10653
2026-06-21T07:19:09.6956189Z             }
2026-06-21T07:19:09.6956291Z           ]
2026-06-21T07:19:09.6956391Z         }
2026-06-21T07:19:09.6956491Z       }
2026-06-21T07:19:09.6956590Z     },
2026-06-21T07:19:09.6956689Z     {
2026-06-21T07:19:09.6956794Z       "id": "REQ-MIGRATE-1",
2026-06-21T07:19:09.6957004Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T07:19:09.6957109Z       "requiredStages": [],
2026-06-21T07:19:09.6957219Z       "stages": {
2026-06-21T07:19:09.6957328Z         "doc": {
2026-06-21T07:19:09.6957439Z           "complete": false,
2026-06-21T07:19:09.6957652Z           "evidence": []
2026-06-21T07:19:09.6957754Z         },
2026-06-21T07:19:09.6957853Z         "impl": {
2026-06-21T07:19:09.6957967Z           "complete": false,
2026-06-21T07:19:09.6958083Z           "evidence": []
2026-06-21T07:19:09.6958186Z         },
2026-06-21T07:19:09.6958407Z         "int": {
2026-06-21T07:19:09.6958515Z           "complete": false,
2026-06-21T07:19:09.6958620Z           "evidence": []
2026-06-21T07:19:09.6958722Z         },
2026-06-21T07:19:09.6958816Z         "unit": {
2026-06-21T07:19:09.6958921Z           "complete": false,
2026-06-21T07:19:09.6959107Z           "evidence": []
2026-06-21T07:19:09.6959211Z         }
2026-06-21T07:19:09.6959316Z       }
2026-06-21T07:19:09.6959415Z     },
2026-06-21T07:19:09.6959518Z     {
2026-06-21T07:19:09.6959618Z       "id": "REQ-MSG-1",
2026-06-21T07:19:09.6960101Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T07:19:09.6960205Z       "requiredStages": [
2026-06-21T07:19:09.6960306Z         "impl",
2026-06-21T07:19:09.6960415Z         "unit",
2026-06-21T07:19:09.6960515Z         "int"
2026-06-21T07:19:09.6960615Z       ],
2026-06-21T07:19:09.6960729Z       "stages": {
2026-06-21T07:19:09.6960839Z         "doc": {
2026-06-21T07:19:09.6960945Z           "complete": false,
2026-06-21T07:19:09.6961049Z           "evidence": []
2026-06-21T07:19:09.6961154Z         },
2026-06-21T07:19:09.6961260Z         "impl": {
2026-06-21T07:19:09.6961373Z           "complete": true,
2026-06-21T07:19:09.6961478Z           "evidence": [
2026-06-21T07:19:09.6961570Z             {
2026-06-21T07:19:09.6961716Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6961815Z               "line": 28
2026-06-21T07:19:09.6961921Z             },
2026-06-21T07:19:09.6962019Z             {
2026-06-21T07:19:09.6962161Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6962276Z               "line": 94
2026-06-21T07:19:09.6962376Z             },
2026-06-21T07:19:09.6962475Z             {
2026-06-21T07:19:09.6962610Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6962715Z               "line": 127
2026-06-21T07:19:09.6962819Z             },
2026-06-21T07:19:09.6962920Z             {
2026-06-21T07:19:09.6963062Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6963163Z               "line": 149
2026-06-21T07:19:09.6963258Z             },
2026-06-21T07:19:09.6963363Z             {
2026-06-21T07:19:09.6963497Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6963602Z               "line": 174
2026-06-21T07:19:09.6963706Z             },
2026-06-21T07:19:09.6963812Z             {
2026-06-21T07:19:09.6963950Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6964054Z               "line": 18
2026-06-21T07:19:09.6964156Z             },
2026-06-21T07:19:09.6964259Z             {
2026-06-21T07:19:09.6964388Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6964499Z               "line": 13
2026-06-21T07:19:09.6964602Z             },
2026-06-21T07:19:09.6964706Z             {
2026-06-21T07:19:09.6964836Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6964945Z               "line": 62
2026-06-21T07:19:09.6965054Z             },
2026-06-21T07:19:09.6965156Z             {
2026-06-21T07:19:09.6965284Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.6965393Z               "line": 13
2026-06-21T07:19:09.6965490Z             }
2026-06-21T07:19:09.6965585Z           ]
2026-06-21T07:19:09.6965684Z         },
2026-06-21T07:19:09.6965785Z         "int": {
2026-06-21T07:19:09.6965894Z           "complete": true,
2026-06-21T07:19:09.6966008Z           "evidence": [
2026-06-21T07:19:09.6966110Z             {
2026-06-21T07:19:09.6966270Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T07:19:09.6966490Z               "line": 9
2026-06-21T07:19:09.6966581Z             },
2026-06-21T07:19:09.6966676Z             {
2026-06-21T07:19:09.6966838Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T07:19:09.6966946Z               "line": 56
2026-06-21T07:19:09.6967141Z             },
2026-06-21T07:19:09.6967235Z             {
2026-06-21T07:19:09.6967398Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T07:19:09.6967507Z               "line": 113
2026-06-21T07:19:09.6967602Z             }
2026-06-21T07:19:09.6967703Z           ]
2026-06-21T07:19:09.6967808Z         },
2026-06-21T07:19:09.6967912Z         "unit": {
2026-06-21T07:19:09.6968018Z           "complete": true,
2026-06-21T07:19:09.6968132Z           "evidence": [
2026-06-21T07:19:09.6968231Z             {
2026-06-21T07:19:09.6968361Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6968461Z               "line": 203
2026-06-21T07:19:09.6968570Z             },
2026-06-21T07:19:09.6968671Z             {
2026-06-21T07:19:09.6968804Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6968909Z               "line": 232
2026-06-21T07:19:09.6969089Z             },
2026-06-21T07:19:09.6969195Z             {
2026-06-21T07:19:09.6969320Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6969438Z               "line": 277
2026-06-21T07:19:09.6969534Z             },
2026-06-21T07:19:09.6969635Z             {
2026-06-21T07:19:09.6969776Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6969881Z               "line": 300
2026-06-21T07:19:09.6969985Z             },
2026-06-21T07:19:09.6970088Z             {
2026-06-21T07:19:09.6970226Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T07:19:09.6970337Z               "line": 325
2026-06-21T07:19:09.6970441Z             },
2026-06-21T07:19:09.6970546Z             {
2026-06-21T07:19:09.6970684Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6970798Z               "line": 204
2026-06-21T07:19:09.6970904Z             },
2026-06-21T07:19:09.6971004Z             {
2026-06-21T07:19:09.6971147Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6971252Z               "line": 237
2026-06-21T07:19:09.6971356Z             },
2026-06-21T07:19:09.6971456Z             {
2026-06-21T07:19:09.6971600Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6971699Z               "line": 251
2026-06-21T07:19:09.6971801Z             },
2026-06-21T07:19:09.6971905Z             {
2026-06-21T07:19:09.6972043Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6972154Z               "line": 263
2026-06-21T07:19:09.6972248Z             },
2026-06-21T07:19:09.6972352Z             {
2026-06-21T07:19:09.6972481Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6972584Z               "line": 162
2026-06-21T07:19:09.6972692Z             },
2026-06-21T07:19:09.6972793Z             {
2026-06-21T07:19:09.6972927Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T07:19:09.6973031Z               "line": 242
2026-06-21T07:19:09.6973137Z             },
2026-06-21T07:19:09.6973242Z             {
2026-06-21T07:19:09.6973370Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.6973480Z               "line": 134
2026-06-21T07:19:09.6973570Z             },
2026-06-21T07:19:09.6973674Z             {
2026-06-21T07:19:09.6973795Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.6973904Z               "line": 153
2026-06-21T07:19:09.6974009Z             }
2026-06-21T07:19:09.6974110Z           ]
2026-06-21T07:19:09.6974209Z         }
2026-06-21T07:19:09.6974304Z       }
2026-06-21T07:19:09.6974420Z     },
2026-06-21T07:19:09.6974519Z     {
2026-06-21T07:19:09.6974633Z       "id": "REQ-MSG-2",
2026-06-21T07:19:09.6974939Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T07:19:09.6975167Z       "requiredStages": [
2026-06-21T07:19:09.6975266Z         "impl",
2026-06-21T07:19:09.6975372Z         "unit"
2026-06-21T07:19:09.6975473Z       ],
2026-06-21T07:19:09.6975571Z       "stages": {
2026-06-21T07:19:09.6975682Z         "doc": {
2026-06-21T07:19:09.6975900Z           "complete": false,
2026-06-21T07:19:09.6976006Z           "evidence": []
2026-06-21T07:19:09.6976111Z         },
2026-06-21T07:19:09.6976210Z         "impl": {
2026-06-21T07:19:09.6976326Z           "complete": true,
2026-06-21T07:19:09.6976435Z           "evidence": [
2026-06-21T07:19:09.6976544Z             {
2026-06-21T07:19:09.6976679Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6976773Z               "line": 11
2026-06-21T07:19:09.6976873Z             },
2026-06-21T07:19:09.6976970Z             {
2026-06-21T07:19:09.6977102Z               "path": "crates/spt/src/main.rs",
2026-06-21T07:19:09.6977208Z               "line": 8
2026-06-21T07:19:09.6977323Z             }
2026-06-21T07:19:09.6977417Z           ]
2026-06-21T07:19:09.6977521Z         },
2026-06-21T07:19:09.6977626Z         "int": {
2026-06-21T07:19:09.6977734Z           "complete": false,
2026-06-21T07:19:09.6977847Z           "evidence": []
2026-06-21T07:19:09.6977948Z         },
2026-06-21T07:19:09.6978053Z         "unit": {
2026-06-21T07:19:09.6978167Z           "complete": true,
2026-06-21T07:19:09.6978273Z           "evidence": [
2026-06-21T07:19:09.6978368Z             {
2026-06-21T07:19:09.6978496Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6978612Z               "line": 7717
2026-06-21T07:19:09.6978716Z             },
2026-06-21T07:19:09.6978811Z             {
2026-06-21T07:19:09.6979021Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6979121Z               "line": 7759
2026-06-21T07:19:09.6979227Z             },
2026-06-21T07:19:09.6979326Z             {
2026-06-21T07:19:09.6979455Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6979566Z               "line": 7808
2026-06-21T07:19:09.6979664Z             },
2026-06-21T07:19:09.6979760Z             {
2026-06-21T07:19:09.6979885Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6979988Z               "line": 7831
2026-06-21T07:19:09.6980089Z             },
2026-06-21T07:19:09.6980200Z             {
2026-06-21T07:19:09.6980321Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6980431Z               "line": 9807
2026-06-21T07:19:09.6980536Z             },
2026-06-21T07:19:09.6980638Z             {
2026-06-21T07:19:09.6980763Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6980863Z               "line": 9816
2026-06-21T07:19:09.6980967Z             },
2026-06-21T07:19:09.6981067Z             {
2026-06-21T07:19:09.6981192Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6981301Z               "line": 9830
2026-06-21T07:19:09.6981402Z             }
2026-06-21T07:19:09.6981502Z           ]
2026-06-21T07:19:09.6981597Z         }
2026-06-21T07:19:09.6981692Z       }
2026-06-21T07:19:09.6981784Z     },
2026-06-21T07:19:09.6981893Z     {
2026-06-21T07:19:09.6982002Z       "id": "REQ-MSG-3",
2026-06-21T07:19:09.6982418Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T07:19:09.6982545Z       "requiredStages": [
2026-06-21T07:19:09.6982651Z         "impl",
2026-06-21T07:19:09.6982757Z         "unit",
2026-06-21T07:19:09.6982860Z         "int"
2026-06-21T07:19:09.6982964Z       ],
2026-06-21T07:19:09.6983070Z       "stages": {
2026-06-21T07:19:09.6983172Z         "doc": {
2026-06-21T07:19:09.6983286Z           "complete": false,
2026-06-21T07:19:09.6983396Z           "evidence": []
2026-06-21T07:19:09.6983501Z         },
2026-06-21T07:19:09.6983610Z         "impl": {
2026-06-21T07:19:09.6983730Z           "complete": true,
2026-06-21T07:19:09.6983835Z           "evidence": [
2026-06-21T07:19:09.6984031Z             {
2026-06-21T07:19:09.6984182Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T07:19:09.6984288Z               "line": 19
2026-06-21T07:19:09.6984388Z             },
2026-06-21T07:19:09.6984497Z             {
2026-06-21T07:19:09.6984627Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6984826Z               "line": 21
2026-06-21T07:19:09.6984927Z             },
2026-06-21T07:19:09.6985022Z             {
2026-06-21T07:19:09.6985155Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6985257Z               "line": 48
2026-06-21T07:19:09.6985361Z             },
2026-06-21T07:19:09.6985461Z             {
2026-06-21T07:19:09.6985596Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6985704Z               "line": 174
2026-06-21T07:19:09.6985803Z             }
2026-06-21T07:19:09.6985903Z           ]
2026-06-21T07:19:09.6986009Z         },
2026-06-21T07:19:09.6986113Z         "int": {
2026-06-21T07:19:09.6986233Z           "complete": true,
2026-06-21T07:19:09.6986342Z           "evidence": [
2026-06-21T07:19:09.6986446Z             {
2026-06-21T07:19:09.6986614Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T07:19:09.6986723Z               "line": 10
2026-06-21T07:19:09.6986828Z             },
2026-06-21T07:19:09.6986933Z             {
2026-06-21T07:19:09.6987090Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T07:19:09.6987201Z               "line": 56
2026-06-21T07:19:09.6987300Z             }
2026-06-21T07:19:09.6987410Z           ]
2026-06-21T07:19:09.6987512Z         },
2026-06-21T07:19:09.6987620Z         "unit": {
2026-06-21T07:19:09.6987738Z           "complete": true,
2026-06-21T07:19:09.6987836Z           "evidence": [
2026-06-21T07:19:09.6987939Z             {
2026-06-21T07:19:09.6988067Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6988181Z               "line": 228
2026-06-21T07:19:09.6988285Z             },
2026-06-21T07:19:09.6988384Z             {
2026-06-21T07:19:09.6988508Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6988613Z               "line": 247
2026-06-21T07:19:09.6988713Z             },
2026-06-21T07:19:09.6988813Z             {
2026-06-21T07:19:09.6989008Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.6989119Z               "line": 270
2026-06-21T07:19:09.6989218Z             }
2026-06-21T07:19:09.6989323Z           ]
2026-06-21T07:19:09.6989415Z         }
2026-06-21T07:19:09.6989524Z       }
2026-06-21T07:19:09.6989619Z     },
2026-06-21T07:19:09.6989724Z     {
2026-06-21T07:19:09.6989829Z       "id": "REQ-MSG-4",
2026-06-21T07:19:09.6990703Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T07:19:09.6990826Z       "requiredStages": [
2026-06-21T07:19:09.6990934Z         "impl",
2026-06-21T07:19:09.6991043Z         "unit",
2026-06-21T07:19:09.6991147Z         "int"
2026-06-21T07:19:09.6991251Z       ],
2026-06-21T07:19:09.6991361Z       "stages": {
2026-06-21T07:19:09.6991462Z         "doc": {
2026-06-21T07:19:09.6991580Z           "complete": false,
2026-06-21T07:19:09.6991705Z           "evidence": []
2026-06-21T07:19:09.6991805Z         },
2026-06-21T07:19:09.6991899Z         "impl": {
2026-06-21T07:19:09.6992010Z           "complete": true,
2026-06-21T07:19:09.6992120Z           "evidence": [
2026-06-21T07:19:09.6992219Z             {
2026-06-21T07:19:09.6992349Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6992458Z               "line": 19
2026-06-21T07:19:09.6992562Z             },
2026-06-21T07:19:09.6992664Z             {
2026-06-21T07:19:09.6992806Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6992921Z               "line": 46
2026-06-21T07:19:09.6993120Z             },
2026-06-21T07:19:09.6993221Z             {
2026-06-21T07:19:09.6993364Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.6993472Z               "line": 532
2026-06-21T07:19:09.6993568Z             },
2026-06-21T07:19:09.6993672Z             {
2026-06-21T07:19:09.6993808Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.6994028Z               "line": 3110
2026-06-21T07:19:09.6994132Z             }
2026-06-21T07:19:09.6994233Z           ]
2026-06-21T07:19:09.6994338Z         },
2026-06-21T07:19:09.6994428Z         "int": {
2026-06-21T07:19:09.6994543Z           "complete": true,
2026-06-21T07:19:09.6994653Z           "evidence": [
2026-06-21T07:19:09.6994757Z             {
2026-06-21T07:19:09.6994901Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T07:19:09.6995005Z               "line": 98
2026-06-21T07:19:09.6995115Z             },
2026-06-21T07:19:09.6995212Z             {
2026-06-21T07:19:09.6995358Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T07:19:09.6995468Z               "line": 128
2026-06-21T07:19:09.6995568Z             }
2026-06-21T07:19:09.6995668Z           ]
2026-06-21T07:19:09.6995773Z         },
2026-06-21T07:19:09.6995870Z         "unit": {
2026-06-21T07:19:09.6995977Z           "complete": true,
2026-06-21T07:19:09.6996093Z           "evidence": [
2026-06-21T07:19:09.6996198Z             {
2026-06-21T07:19:09.6996325Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6996430Z               "line": 68
2026-06-21T07:19:09.6996526Z             },
2026-06-21T07:19:09.6996630Z             {
2026-06-21T07:19:09.6996763Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6996874Z               "line": 79
2026-06-21T07:19:09.6996983Z             },
2026-06-21T07:19:09.6997078Z             {
2026-06-21T07:19:09.6997208Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6997302Z               "line": 90
2026-06-21T07:19:09.6997407Z             },
2026-06-21T07:19:09.6997508Z             {
2026-06-21T07:19:09.6997631Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.6997737Z               "line": 151
2026-06-21T07:19:09.6997837Z             }
2026-06-21T07:19:09.6997941Z           ]
2026-06-21T07:19:09.6998042Z         }
2026-06-21T07:19:09.6998152Z       }
2026-06-21T07:19:09.6998246Z     },
2026-06-21T07:19:09.6998352Z     {
2026-06-21T07:19:09.6998471Z       "id": "REQ-MSG-5",
2026-06-21T07:19:09.6999335Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T07:19:09.6999455Z       "requiredStages": [
2026-06-21T07:19:09.6999559Z         "doc",
2026-06-21T07:19:09.6999660Z         "impl",
2026-06-21T07:19:09.6999765Z         "unit"
2026-06-21T07:19:09.6999864Z       ],
2026-06-21T07:19:09.6999970Z       "stages": {
2026-06-21T07:19:09.7000065Z         "doc": {
2026-06-21T07:19:09.7000184Z           "complete": true,
2026-06-21T07:19:09.7000289Z           "evidence": [
2026-06-21T07:19:09.7000394Z             {
2026-06-21T07:19:09.7000513Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7000624Z               "line": 231
2026-06-21T07:19:09.7000728Z             }
2026-06-21T07:19:09.7000819Z           ]
2026-06-21T07:19:09.7000919Z         },
2026-06-21T07:19:09.7001024Z         "impl": {
2026-06-21T07:19:09.7001138Z           "complete": true,
2026-06-21T07:19:09.7001234Z           "evidence": [
2026-06-21T07:19:09.7001339Z             {
2026-06-21T07:19:09.7001480Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.7001590Z               "line": 60
2026-06-21T07:19:09.7001698Z             },
2026-06-21T07:19:09.7001796Z             {
2026-06-21T07:19:09.7001945Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7002154Z               "line": 126
2026-06-21T07:19:09.7002246Z             },
2026-06-21T07:19:09.7002351Z             {
2026-06-21T07:19:09.7002483Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7002589Z               "line": 135
2026-06-21T07:19:09.7002694Z             },
2026-06-21T07:19:09.7002885Z             {
2026-06-21T07:19:09.7003028Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7003137Z               "line": 149
2026-06-21T07:19:09.7003243Z             },
2026-06-21T07:19:09.7003346Z             {
2026-06-21T07:19:09.7003496Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7003586Z               "line": 178
2026-06-21T07:19:09.7003700Z             },
2026-06-21T07:19:09.7003801Z             {
2026-06-21T07:19:09.7003924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7004037Z               "line": 2802
2026-06-21T07:19:09.7004133Z             }
2026-06-21T07:19:09.7004232Z           ]
2026-06-21T07:19:09.7004335Z         },
2026-06-21T07:19:09.7004440Z         "int": {
2026-06-21T07:19:09.7004545Z           "complete": true,
2026-06-21T07:19:09.7004650Z           "evidence": [
2026-06-21T07:19:09.7004755Z             {
2026-06-21T07:19:09.7004898Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T07:19:09.7005007Z               "line": 19
2026-06-21T07:19:09.7005103Z             }
2026-06-21T07:19:09.7005208Z           ]
2026-06-21T07:19:09.7005317Z         },
2026-06-21T07:19:09.7005413Z         "unit": {
2026-06-21T07:19:09.7005522Z           "complete": true,
2026-06-21T07:19:09.7005622Z           "evidence": [
2026-06-21T07:19:09.7005728Z             {
2026-06-21T07:19:09.7005865Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.7005970Z               "line": 192
2026-06-21T07:19:09.7006077Z             },
2026-06-21T07:19:09.7006180Z             {
2026-06-21T07:19:09.7006328Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T07:19:09.7006439Z               "line": 154
2026-06-21T07:19:09.7006547Z             },
2026-06-21T07:19:09.7006648Z             {
2026-06-21T07:19:09.7006787Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7006895Z               "line": 122
2026-06-21T07:19:09.7006995Z             },
2026-06-21T07:19:09.7007096Z             {
2026-06-21T07:19:09.7007233Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7007333Z               "line": 452
2026-06-21T07:19:09.7007420Z             },
2026-06-21T07:19:09.7007524Z             {
2026-06-21T07:19:09.7007668Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7007777Z               "line": 501
2026-06-21T07:19:09.7007886Z             },
2026-06-21T07:19:09.7007987Z             {
2026-06-21T07:19:09.7008125Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7008225Z               "line": 517
2026-06-21T07:19:09.7008326Z             },
2026-06-21T07:19:09.7008425Z             {
2026-06-21T07:19:09.7008554Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7008669Z               "line": 536
2026-06-21T07:19:09.7008759Z             },
2026-06-21T07:19:09.7008869Z             {
2026-06-21T07:19:09.7009078Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7009206Z               "line": 7660
2026-06-21T07:19:09.7009311Z             }
2026-06-21T07:19:09.7009409Z           ]
2026-06-21T07:19:09.7009508Z         }
2026-06-21T07:19:09.7009610Z       }
2026-06-21T07:19:09.7009710Z     },
2026-06-21T07:19:09.7009809Z     {
2026-06-21T07:19:09.7009915Z       "id": "REQ-MSG-6",
2026-06-21T07:19:09.7011575Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T07:19:09.7011789Z       "requiredStages": [
2026-06-21T07:19:09.7011899Z         "doc",
2026-06-21T07:19:09.7012007Z         "impl",
2026-06-21T07:19:09.7012197Z         "unit"
2026-06-21T07:19:09.7012300Z       ],
2026-06-21T07:19:09.7012409Z       "stages": {
2026-06-21T07:19:09.7012510Z         "doc": {
2026-06-21T07:19:09.7012615Z           "complete": true,
2026-06-21T07:19:09.7012729Z           "evidence": [
2026-06-21T07:19:09.7012830Z             {
2026-06-21T07:19:09.7012949Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7013053Z               "line": 234
2026-06-21T07:19:09.7013149Z             }
2026-06-21T07:19:09.7013235Z           ]
2026-06-21T07:19:09.7013334Z         },
2026-06-21T07:19:09.7013440Z         "impl": {
2026-06-21T07:19:09.7013558Z           "complete": true,
2026-06-21T07:19:09.7013668Z           "evidence": [
2026-06-21T07:19:09.7013774Z             {
2026-06-21T07:19:09.7013931Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7014046Z               "line": 177
2026-06-21T07:19:09.7014146Z             },
2026-06-21T07:19:09.7014245Z             {
2026-06-21T07:19:09.7014404Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7014517Z               "line": 428
2026-06-21T07:19:09.7017319Z             },
2026-06-21T07:19:09.7017440Z             {
2026-06-21T07:19:09.7017612Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7017718Z               "line": 451
2026-06-21T07:19:09.7017822Z             },
2026-06-21T07:19:09.7017932Z             {
2026-06-21T07:19:09.7018070Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.7018179Z               "line": 89
2026-06-21T07:19:09.7018280Z             },
2026-06-21T07:19:09.7018375Z             {
2026-06-21T07:19:09.7018533Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7018642Z               "line": 155
2026-06-21T07:19:09.7018746Z             }
2026-06-21T07:19:09.7018843Z           ]
2026-06-21T07:19:09.7019024Z         },
2026-06-21T07:19:09.7019119Z         "int": {
2026-06-21T07:19:09.7019239Z           "complete": false,
2026-06-21T07:19:09.7019348Z           "evidence": []
2026-06-21T07:19:09.7019453Z         },
2026-06-21T07:19:09.7019550Z         "unit": {
2026-06-21T07:19:09.7019652Z           "complete": true,
2026-06-21T07:19:09.7019761Z           "evidence": [
2026-06-21T07:19:09.7019857Z             {
2026-06-21T07:19:09.7020012Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7020122Z               "line": 1746
2026-06-21T07:19:09.7020227Z             },
2026-06-21T07:19:09.7020332Z             {
2026-06-21T07:19:09.7020460Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.7020570Z               "line": 219
2026-06-21T07:19:09.7020675Z             }
2026-06-21T07:19:09.7020780Z           ]
2026-06-21T07:19:09.7020880Z         }
2026-06-21T07:19:09.7020980Z       }
2026-06-21T07:19:09.7021076Z     },
2026-06-21T07:19:09.7021166Z     {
2026-06-21T07:19:09.7021290Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T07:19:09.7025082Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T07:19:09.7025450Z       "requiredStages": [
2026-06-21T07:19:09.7025550Z         "doc",
2026-06-21T07:19:09.7025657Z         "impl",
2026-06-21T07:19:09.7025761Z         "unit",
2026-06-21T07:19:09.7025865Z         "int"
2026-06-21T07:19:09.7025967Z       ],
2026-06-21T07:19:09.7026071Z       "stages": {
2026-06-21T07:19:09.7026175Z         "doc": {
2026-06-21T07:19:09.7026290Z           "complete": true,
2026-06-21T07:19:09.7026391Z           "evidence": [
2026-06-21T07:19:09.7026500Z             {
2026-06-21T07:19:09.7026761Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T07:19:09.7026882Z               "line": 47
2026-06-21T07:19:09.7027005Z             }
2026-06-21T07:19:09.7027110Z           ]
2026-06-21T07:19:09.7027211Z         },
2026-06-21T07:19:09.7027319Z         "impl": {
2026-06-21T07:19:09.7027434Z           "complete": true,
2026-06-21T07:19:09.7027536Z           "evidence": [
2026-06-21T07:19:09.7027639Z             {
2026-06-21T07:19:09.7027764Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7027879Z               "line": 20
2026-06-21T07:19:09.7027968Z             },
2026-06-21T07:19:09.7028072Z             {
2026-06-21T07:19:09.7028197Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7028301Z               "line": 33
2026-06-21T07:19:09.7028405Z             },
2026-06-21T07:19:09.7028507Z             {
2026-06-21T07:19:09.7028644Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7028754Z               "line": 47
2026-06-21T07:19:09.7028855Z             },
2026-06-21T07:19:09.7029030Z             {
2026-06-21T07:19:09.7029165Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7029279Z               "line": 58
2026-06-21T07:19:09.7029383Z             },
2026-06-21T07:19:09.7029489Z             {
2026-06-21T07:19:09.7029612Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7029718Z               "line": 14
2026-06-21T07:19:09.7029823Z             },
2026-06-21T07:19:09.7029927Z             {
2026-06-21T07:19:09.7030061Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7030161Z               "line": 27
2026-06-21T07:19:09.7030260Z             },
2026-06-21T07:19:09.7030360Z             {
2026-06-21T07:19:09.7030492Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7030596Z               "line": 40
2026-06-21T07:19:09.7030701Z             },
2026-06-21T07:19:09.7030807Z             {
2026-06-21T07:19:09.7030944Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.7031049Z               "line": 92
2026-06-21T07:19:09.7031150Z             },
2026-06-21T07:19:09.7031254Z             {
2026-06-21T07:19:09.7031398Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7031516Z               "line": 143
2026-06-21T07:19:09.7031626Z             },
2026-06-21T07:19:09.7031717Z             {
2026-06-21T07:19:09.7031864Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7031970Z               "line": 216
2026-06-21T07:19:09.7032069Z             },
2026-06-21T07:19:09.7032169Z             {
2026-06-21T07:19:09.7032309Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7032412Z               "line": 533
2026-06-21T07:19:09.7032513Z             },
2026-06-21T07:19:09.7032609Z             {
2026-06-21T07:19:09.7032746Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T07:19:09.7032972Z               "line": 78
2026-06-21T07:19:09.7033070Z             },
2026-06-21T07:19:09.7033155Z             {
2026-06-21T07:19:09.7033289Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7033397Z               "line": 3111
2026-06-21T07:19:09.7033500Z             }
2026-06-21T07:19:09.7033697Z           ]
2026-06-21T07:19:09.7033802Z         },
2026-06-21T07:19:09.7033907Z         "int": {
2026-06-21T07:19:09.7034022Z           "complete": true,
2026-06-21T07:19:09.7034135Z           "evidence": [
2026-06-21T07:19:09.7034237Z             {
2026-06-21T07:19:09.7034393Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T07:19:09.7034498Z               "line": 15
2026-06-21T07:19:09.7034603Z             }
2026-06-21T07:19:09.7034703Z           ]
2026-06-21T07:19:09.7034803Z         },
2026-06-21T07:19:09.7034909Z         "unit": {
2026-06-21T07:19:09.7035022Z           "complete": true,
2026-06-21T07:19:09.7035127Z           "evidence": [
2026-06-21T07:19:09.7035238Z             {
2026-06-21T07:19:09.7035375Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7035481Z               "line": 102
2026-06-21T07:19:09.7035586Z             },
2026-06-21T07:19:09.7035684Z             {
2026-06-21T07:19:09.7035813Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T07:19:09.7035926Z               "line": 137
2026-06-21T07:19:09.7036025Z             },
2026-06-21T07:19:09.7036130Z             {
2026-06-21T07:19:09.7036274Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7036392Z               "line": 98
2026-06-21T07:19:09.7036493Z             },
2026-06-21T07:19:09.7036593Z             {
2026-06-21T07:19:09.7036716Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7036827Z               "line": 106
2026-06-21T07:19:09.7036931Z             },
2026-06-21T07:19:09.7037026Z             {
2026-06-21T07:19:09.7037151Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7037255Z               "line": 113
2026-06-21T07:19:09.7037355Z             },
2026-06-21T07:19:09.7037461Z             {
2026-06-21T07:19:09.7037599Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T07:19:09.7037733Z               "line": 122
2026-06-21T07:19:09.7037842Z             }
2026-06-21T07:19:09.7037947Z           ]
2026-06-21T07:19:09.7038043Z         }
2026-06-21T07:19:09.7038143Z       }
2026-06-21T07:19:09.7038237Z     },
2026-06-21T07:19:09.7038329Z     {
2026-06-21T07:19:09.7038477Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T07:19:09.7043616Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T07:19:09.7043859Z       "requiredStages": [
2026-06-21T07:19:09.7044061Z         "doc",
2026-06-21T07:19:09.7044167Z         "impl",
2026-06-21T07:19:09.7044272Z         "unit",
2026-06-21T07:19:09.7044380Z         "int"
2026-06-21T07:19:09.7044477Z       ],
2026-06-21T07:19:09.7044577Z       "stages": {
2026-06-21T07:19:09.7044681Z         "doc": {
2026-06-21T07:19:09.7044792Z           "complete": true,
2026-06-21T07:19:09.7044901Z           "evidence": [
2026-06-21T07:19:09.7045000Z             {
2026-06-21T07:19:09.7045173Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T07:19:09.7045282Z               "line": 277
2026-06-21T07:19:09.7045382Z             },
2026-06-21T07:19:09.7045487Z             {
2026-06-21T07:19:09.7045620Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.7045721Z               "line": 198
2026-06-21T07:19:09.7045817Z             }
2026-06-21T07:19:09.7045916Z           ]
2026-06-21T07:19:09.7046022Z         },
2026-06-21T07:19:09.7046141Z         "impl": {
2026-06-21T07:19:09.7046259Z           "complete": true,
2026-06-21T07:19:09.7046373Z           "evidence": [
2026-06-21T07:19:09.7046468Z             {
2026-06-21T07:19:09.7046618Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7046724Z               "line": 1025
2026-06-21T07:19:09.7046825Z             },
2026-06-21T07:19:09.7046923Z             {
2026-06-21T07:19:09.7047082Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7047186Z               "line": 23
2026-06-21T07:19:09.7047286Z             },
2026-06-21T07:19:09.7047387Z             {
2026-06-21T07:19:09.7047539Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7047654Z               "line": 91
2026-06-21T07:19:09.7047749Z             },
2026-06-21T07:19:09.7047849Z             {
2026-06-21T07:19:09.7048003Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7048106Z               "line": 239
2026-06-21T07:19:09.7048211Z             },
2026-06-21T07:19:09.7048313Z             {
2026-06-21T07:19:09.7048463Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7048569Z               "line": 287
2026-06-21T07:19:09.7048675Z             },
2026-06-21T07:19:09.7048778Z             {
2026-06-21T07:19:09.7048918Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7049097Z               "line": 311
2026-06-21T07:19:09.7049192Z             },
2026-06-21T07:19:09.7049292Z             {
2026-06-21T07:19:09.7049441Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7049550Z               "line": 60
2026-06-21T07:19:09.7049651Z             },
2026-06-21T07:19:09.7049751Z             {
2026-06-21T07:19:09.7049904Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7050003Z               "line": 889
2026-06-21T07:19:09.7050108Z             }
2026-06-21T07:19:09.7050198Z           ]
2026-06-21T07:19:09.7050309Z         },
2026-06-21T07:19:09.7050427Z         "int": {
2026-06-21T07:19:09.7050533Z           "complete": true,
2026-06-21T07:19:09.7050643Z           "evidence": [
2026-06-21T07:19:09.7050747Z             {
2026-06-21T07:19:09.7050924Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.7051027Z               "line": 1089
2026-06-21T07:19:09.7051134Z             },
2026-06-21T07:19:09.7051239Z             {
2026-06-21T07:19:09.7051409Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.7051513Z               "line": 1194
2026-06-21T07:19:09.7051608Z             },
2026-06-21T07:19:09.7051711Z             {
2026-06-21T07:19:09.7051869Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.7052078Z               "line": 1262
2026-06-21T07:19:09.7052169Z             },
2026-06-21T07:19:09.7052270Z             {
2026-06-21T07:19:09.7052426Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T07:19:09.7052627Z               "line": 1355
2026-06-21T07:19:09.7052732Z             }
2026-06-21T07:19:09.7052838Z           ]
2026-06-21T07:19:09.7052938Z         },
2026-06-21T07:19:09.7053037Z         "unit": {
2026-06-21T07:19:09.7053143Z           "complete": true,
2026-06-21T07:19:09.7053257Z           "evidence": [
2026-06-21T07:19:09.7053356Z             {
2026-06-21T07:19:09.7053510Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.7053619Z               "line": 270
2026-06-21T07:19:09.7053720Z             },
2026-06-21T07:19:09.7053820Z             {
2026-06-21T07:19:09.7053962Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7054073Z               "line": 350
2026-06-21T07:19:09.7054177Z             },
2026-06-21T07:19:09.7054281Z             {
2026-06-21T07:19:09.7054433Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7054531Z               "line": 381
2026-06-21T07:19:09.7054631Z             },
2026-06-21T07:19:09.7054736Z             {
2026-06-21T07:19:09.7054884Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7054983Z               "line": 411
2026-06-21T07:19:09.7055089Z             },
2026-06-21T07:19:09.7055189Z             {
2026-06-21T07:19:09.7055328Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T07:19:09.7055432Z               "line": 440
2026-06-21T07:19:09.7055532Z             },
2026-06-21T07:19:09.7055637Z             {
2026-06-21T07:19:09.7055780Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7055890Z               "line": 1181
2026-06-21T07:19:09.7055991Z             }
2026-06-21T07:19:09.7056099Z           ]
2026-06-21T07:19:09.7056204Z         }
2026-06-21T07:19:09.7056306Z       }
2026-06-21T07:19:09.7056405Z     },
2026-06-21T07:19:09.7056510Z     {
2026-06-21T07:19:09.7056625Z       "id": "REQ-NET-1",
2026-06-21T07:19:09.7056838Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T07:19:09.7056962Z       "requiredStages": [
2026-06-21T07:19:09.7057070Z         "impl",
2026-06-21T07:19:09.7057160Z         "unit",
2026-06-21T07:19:09.7057264Z         "int"
2026-06-21T07:19:09.7057366Z       ],
2026-06-21T07:19:09.7057469Z       "stages": {
2026-06-21T07:19:09.7057574Z         "doc": {
2026-06-21T07:19:09.7057675Z           "complete": false,
2026-06-21T07:19:09.7057789Z           "evidence": []
2026-06-21T07:19:09.7057894Z         },
2026-06-21T07:19:09.7057999Z         "impl": {
2026-06-21T07:19:09.7058103Z           "complete": true,
2026-06-21T07:19:09.7058204Z           "evidence": [
2026-06-21T07:19:09.7058309Z             {
2026-06-21T07:19:09.7058452Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7058563Z               "line": 54
2026-06-21T07:19:09.7058657Z             },
2026-06-21T07:19:09.7058757Z             {
2026-06-21T07:19:09.7058901Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7059091Z               "line": 594
2026-06-21T07:19:09.7059192Z             },
2026-06-21T07:19:09.7059291Z             {
2026-06-21T07:19:09.7059434Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T07:19:09.7059536Z               "line": 130
2026-06-21T07:19:09.7059643Z             },
2026-06-21T07:19:09.7059733Z             {
2026-06-21T07:19:09.7059877Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7059977Z               "line": 97
2026-06-21T07:19:09.7060081Z             },
2026-06-21T07:19:09.7060177Z             {
2026-06-21T07:19:09.7060329Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7060430Z               "line": 159
2026-06-21T07:19:09.7060630Z             },
2026-06-21T07:19:09.7060730Z             {
2026-06-21T07:19:09.7060878Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7060978Z               "line": 175
2026-06-21T07:19:09.7061078Z             },
2026-06-21T07:19:09.7061184Z             {
2026-06-21T07:19:09.7061428Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7061536Z               "line": 190
2026-06-21T07:19:09.7061627Z             },
2026-06-21T07:19:09.7061732Z             {
2026-06-21T07:19:09.7061869Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7061974Z               "line": 271
2026-06-21T07:19:09.7062074Z             },
2026-06-21T07:19:09.7062173Z             {
2026-06-21T07:19:09.7062319Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7062419Z               "line": 306
2026-06-21T07:19:09.7062521Z             },
2026-06-21T07:19:09.7062624Z             {
2026-06-21T07:19:09.7062769Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7062877Z               "line": 312
2026-06-21T07:19:09.7062967Z             },
2026-06-21T07:19:09.7063074Z             {
2026-06-21T07:19:09.7063220Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7063321Z               "line": 318
2026-06-21T07:19:09.7063421Z             },
2026-06-21T07:19:09.7063526Z             {
2026-06-21T07:19:09.7063674Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7063778Z               "line": 334
2026-06-21T07:19:09.7063888Z             },
2026-06-21T07:19:09.7063994Z             {
2026-06-21T07:19:09.7064145Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7064246Z               "line": 354
2026-06-21T07:19:09.7064347Z             },
2026-06-21T07:19:09.7064450Z             {
2026-06-21T07:19:09.7064585Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.7064695Z               "line": 35
2026-06-21T07:19:09.7064798Z             },
2026-06-21T07:19:09.7064902Z             {
2026-06-21T07:19:09.7065036Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.7065148Z               "line": 85
2026-06-21T07:19:09.7065249Z             },
2026-06-21T07:19:09.7065354Z             {
2026-06-21T07:19:09.7065496Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.7065592Z               "line": 138
2026-06-21T07:19:09.7065697Z             },
2026-06-21T07:19:09.7065801Z             {
2026-06-21T07:19:09.7065931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7066041Z               "line": 2953
2026-06-21T07:19:09.7066144Z             },
2026-06-21T07:19:09.7066251Z             {
2026-06-21T07:19:09.7066384Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7066493Z               "line": 17
2026-06-21T07:19:09.7066594Z             }
2026-06-21T07:19:09.7066693Z           ]
2026-06-21T07:19:09.7066789Z         },
2026-06-21T07:19:09.7066890Z         "int": {
2026-06-21T07:19:09.7067007Z           "complete": true,
2026-06-21T07:19:09.7067108Z           "evidence": [
2026-06-21T07:19:09.7067214Z             {
2026-06-21T07:19:09.7067360Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7067474Z               "line": 341
2026-06-21T07:19:09.7067569Z             },
2026-06-21T07:19:09.7067677Z             {
2026-06-21T07:19:09.7067824Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7067926Z               "line": 675
2026-06-21T07:19:09.7068015Z             },
2026-06-21T07:19:09.7068116Z             {
2026-06-21T07:19:09.7068269Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7068373Z               "line": 973
2026-06-21T07:19:09.7068474Z             }
2026-06-21T07:19:09.7068574Z           ]
2026-06-21T07:19:09.7068673Z         },
2026-06-21T07:19:09.7068789Z         "unit": {
2026-06-21T07:19:09.7069069Z           "complete": true,
2026-06-21T07:19:09.7069184Z           "evidence": [
2026-06-21T07:19:09.7069289Z             {
2026-06-21T07:19:09.7069438Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7069541Z               "line": 651
2026-06-21T07:19:09.7069641Z             },
2026-06-21T07:19:09.7069837Z             {
2026-06-21T07:19:09.7069990Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7070091Z               "line": 686
2026-06-21T07:19:09.7070199Z             },
2026-06-21T07:19:09.7070302Z             {
2026-06-21T07:19:09.7070457Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7070556Z               "line": 940
2026-06-21T07:19:09.7070661Z             },
2026-06-21T07:19:09.7070752Z             {
2026-06-21T07:19:09.7070894Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T07:19:09.7071009Z               "line": 201
2026-06-21T07:19:09.7071105Z             },
2026-06-21T07:19:09.7071218Z             {
2026-06-21T07:19:09.7071363Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7071476Z               "line": 442
2026-06-21T07:19:09.7071576Z             },
2026-06-21T07:19:09.7071678Z             {
2026-06-21T07:19:09.7071819Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7071929Z               "line": 456
2026-06-21T07:19:09.7072040Z             },
2026-06-21T07:19:09.7072139Z             {
2026-06-21T07:19:09.7072282Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7072387Z               "line": 475
2026-06-21T07:19:09.7072495Z             },
2026-06-21T07:19:09.7072600Z             {
2026-06-21T07:19:09.7072747Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.7072860Z               "line": 120
2026-06-21T07:19:09.7072956Z             },
2026-06-21T07:19:09.7073057Z             {
2026-06-21T07:19:09.7073184Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T07:19:09.7073299Z               "line": 163
2026-06-21T07:19:09.7073409Z             },
2026-06-21T07:19:09.7073508Z             {
2026-06-21T07:19:09.7073643Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T07:19:09.7073752Z               "line": 530
2026-06-21T07:19:09.7073857Z             },
2026-06-21T07:19:09.7073958Z             {
2026-06-21T07:19:09.7074086Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7074195Z               "line": 616
2026-06-21T07:19:09.7074296Z             },
2026-06-21T07:19:09.7074405Z             {
2026-06-21T07:19:09.7074530Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7074635Z               "line": 1006
2026-06-21T07:19:09.7074735Z             }
2026-06-21T07:19:09.7074840Z           ]
2026-06-21T07:19:09.7074940Z         }
2026-06-21T07:19:09.7075029Z       }
2026-06-21T07:19:09.7075131Z     },
2026-06-21T07:19:09.7075231Z     {
2026-06-21T07:19:09.7075349Z       "id": "REQ-NET-2",
2026-06-21T07:19:09.7075558Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T07:19:09.7075666Z       "requiredStages": [
2026-06-21T07:19:09.7075770Z         "impl"
2026-06-21T07:19:09.7075881Z       ],
2026-06-21T07:19:09.7075990Z       "stages": {
2026-06-21T07:19:09.7076099Z         "doc": {
2026-06-21T07:19:09.7076215Z           "complete": false,
2026-06-21T07:19:09.7076328Z           "evidence": []
2026-06-21T07:19:09.7076428Z         },
2026-06-21T07:19:09.7076534Z         "impl": {
2026-06-21T07:19:09.7076639Z           "complete": true,
2026-06-21T07:19:09.7076757Z           "evidence": [
2026-06-21T07:19:09.7076863Z             {
2026-06-21T07:19:09.7077005Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.7077116Z               "line": 57
2026-06-21T07:19:09.7077220Z             },
2026-06-21T07:19:09.7077329Z             {
2026-06-21T07:19:09.7077474Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7077683Z               "line": 71
2026-06-21T07:19:09.7077789Z             },
2026-06-21T07:19:09.7077891Z             {
2026-06-21T07:19:09.7078044Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7078148Z               "line": 81
2026-06-21T07:19:09.7078246Z             },
2026-06-21T07:19:09.7078428Z             {
2026-06-21T07:19:09.7078571Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7078680Z               "line": 159
2026-06-21T07:19:09.7078781Z             },
2026-06-21T07:19:09.7078885Z             {
2026-06-21T07:19:09.7079096Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7079205Z               "line": 175
2026-06-21T07:19:09.7079305Z             },
2026-06-21T07:19:09.7079411Z             {
2026-06-21T07:19:09.7079557Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T07:19:09.7079668Z               "line": 190
2026-06-21T07:19:09.7079768Z             }
2026-06-21T07:19:09.7079872Z           ]
2026-06-21T07:19:09.7079978Z         },
2026-06-21T07:19:09.7080068Z         "int": {
2026-06-21T07:19:09.7080192Z           "complete": false,
2026-06-21T07:19:09.7080293Z           "evidence": []
2026-06-21T07:19:09.7080397Z         },
2026-06-21T07:19:09.7080502Z         "unit": {
2026-06-21T07:19:09.7080613Z           "complete": true,
2026-06-21T07:19:09.7080712Z           "evidence": [
2026-06-21T07:19:09.7080816Z             {
2026-06-21T07:19:09.7080964Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.7081069Z               "line": 402
2026-06-21T07:19:09.7081168Z             }
2026-06-21T07:19:09.7081264Z           ]
2026-06-21T07:19:09.7081364Z         }
2026-06-21T07:19:09.7081469Z       }
2026-06-21T07:19:09.7081560Z     },
2026-06-21T07:19:09.7081655Z     {
2026-06-21T07:19:09.7081760Z       "id": "REQ-NET-3",
2026-06-21T07:19:09.7081960Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T07:19:09.7082079Z       "requiredStages": [
2026-06-21T07:19:09.7082189Z         "impl",
2026-06-21T07:19:09.7082294Z         "unit"
2026-06-21T07:19:09.7082394Z       ],
2026-06-21T07:19:09.7082504Z       "stages": {
2026-06-21T07:19:09.7082604Z         "doc": {
2026-06-21T07:19:09.7082727Z           "complete": false,
2026-06-21T07:19:09.7082833Z           "evidence": []
2026-06-21T07:19:09.7082933Z         },
2026-06-21T07:19:09.7083042Z         "impl": {
2026-06-21T07:19:09.7083146Z           "complete": true,
2026-06-21T07:19:09.7083256Z           "evidence": [
2026-06-21T07:19:09.7083349Z             {
2026-06-21T07:19:09.7083497Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.7083612Z               "line": 39
2026-06-21T07:19:09.7083711Z             },
2026-06-21T07:19:09.7083816Z             {
2026-06-21T07:19:09.7083940Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.7084049Z               "line": 182
2026-06-21T07:19:09.7084151Z             },
2026-06-21T07:19:09.7084260Z             {
2026-06-21T07:19:09.7084388Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T07:19:09.7084494Z               "line": 333
2026-06-21T07:19:09.7084594Z             },
2026-06-21T07:19:09.7084684Z             {
2026-06-21T07:19:09.7084823Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T07:19:09.7084932Z               "line": 36
2026-06-21T07:19:09.7085036Z             },
2026-06-21T07:19:09.7085143Z             {
2026-06-21T07:19:09.7085285Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7085395Z               "line": 158
2026-06-21T07:19:09.7085500Z             },
2026-06-21T07:19:09.7085604Z             {
2026-06-21T07:19:09.7085744Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7085853Z               "line": 238
2026-06-21T07:19:09.7085956Z             },
2026-06-21T07:19:09.7086051Z             {
2026-06-21T07:19:09.7086207Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7086421Z               "line": 259
2026-06-21T07:19:09.7086517Z             },
2026-06-21T07:19:09.7086616Z             {
2026-06-21T07:19:09.7086765Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7086865Z               "line": 317
2026-06-21T07:19:09.7087056Z             },
2026-06-21T07:19:09.7087151Z             {
2026-06-21T07:19:09.7087303Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7087419Z               "line": 336
2026-06-21T07:19:09.7087518Z             },
2026-06-21T07:19:09.7087618Z             {
2026-06-21T07:19:09.7087766Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7087866Z               "line": 374
2026-06-21T07:19:09.7087967Z             },
2026-06-21T07:19:09.7088072Z             {
2026-06-21T07:19:09.7088209Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7088320Z               "line": 419
2026-06-21T07:19:09.7088429Z             },
2026-06-21T07:19:09.7088537Z             {
2026-06-21T07:19:09.7088680Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7088783Z               "line": 432
2026-06-21T07:19:09.7088883Z             },
2026-06-21T07:19:09.7089061Z             {
2026-06-21T07:19:09.7089207Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7089327Z               "line": 29
2026-06-21T07:19:09.7089436Z             },
2026-06-21T07:19:09.7089526Z             {
2026-06-21T07:19:09.7089675Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7089783Z               "line": 72
2026-06-21T07:19:09.7089890Z             },
2026-06-21T07:19:09.7089994Z             {
2026-06-21T07:19:09.7090137Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7090253Z               "line": 123
2026-06-21T07:19:09.7090351Z             }
2026-06-21T07:19:09.7090456Z           ]
2026-06-21T07:19:09.7090558Z         },
2026-06-21T07:19:09.7090671Z         "int": {
2026-06-21T07:19:09.7090790Z           "complete": false,
2026-06-21T07:19:09.7090897Z           "evidence": []
2026-06-21T07:19:09.7090995Z         },
2026-06-21T07:19:09.7091086Z         "unit": {
2026-06-21T07:19:09.7091197Z           "complete": true,
2026-06-21T07:19:09.7091300Z           "evidence": [
2026-06-21T07:19:09.7091405Z             {
2026-06-21T07:19:09.7091548Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.7091643Z               "line": 223
2026-06-21T07:19:09.7091752Z             },
2026-06-21T07:19:09.7091853Z             {
2026-06-21T07:19:09.7092000Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.7092100Z               "line": 351
2026-06-21T07:19:09.7092206Z             },
2026-06-21T07:19:09.7092310Z             {
2026-06-21T07:19:09.7092439Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T07:19:09.7092554Z               "line": 504
2026-06-21T07:19:09.7092649Z             },
2026-06-21T07:19:09.7092764Z             {
2026-06-21T07:19:09.7092925Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T07:19:09.7093035Z               "line": 93
2026-06-21T07:19:09.7093137Z             },
2026-06-21T07:19:09.7093240Z             {
2026-06-21T07:19:09.7093378Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T07:19:09.7093484Z               "line": 142
2026-06-21T07:19:09.7093588Z             },
2026-06-21T07:19:09.7093687Z             {
2026-06-21T07:19:09.7093834Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7093952Z               "line": 315
2026-06-21T07:19:09.7094047Z             },
2026-06-21T07:19:09.7094148Z             {
2026-06-21T07:19:09.7094286Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7094391Z               "line": 355
2026-06-21T07:19:09.7094491Z             },
2026-06-21T07:19:09.7094586Z             {
2026-06-21T07:19:09.7094730Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T07:19:09.7094934Z               "line": 494
2026-06-21T07:19:09.7095040Z             }
2026-06-21T07:19:09.7095145Z           ]
2026-06-21T07:19:09.7095254Z         }
2026-06-21T07:19:09.7095360Z       }
2026-06-21T07:19:09.7095454Z     },
2026-06-21T07:19:09.7095549Z     {
2026-06-21T07:19:09.7095769Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T07:19:09.7096051Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T07:19:09.7096169Z       "requiredStages": [
2026-06-21T07:19:09.7096280Z         "impl",
2026-06-21T07:19:09.7096380Z         "unit"
2026-06-21T07:19:09.7096469Z       ],
2026-06-21T07:19:09.7096578Z       "stages": {
2026-06-21T07:19:09.7096678Z         "doc": {
2026-06-21T07:19:09.7096791Z           "complete": false,
2026-06-21T07:19:09.7096895Z           "evidence": []
2026-06-21T07:19:09.7097006Z         },
2026-06-21T07:19:09.7097110Z         "impl": {
2026-06-21T07:19:09.7097220Z           "complete": true,
2026-06-21T07:19:09.7097330Z           "evidence": [
2026-06-21T07:19:09.7097434Z             {
2026-06-21T07:19:09.7097583Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7097692Z               "line": 60
2026-06-21T07:19:09.7097796Z             },
2026-06-21T07:19:09.7097902Z             {
2026-06-21T07:19:09.7098040Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7098149Z               "line": 68
2026-06-21T07:19:09.7098250Z             },
2026-06-21T07:19:09.7098355Z             {
2026-06-21T07:19:09.7098498Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7098603Z               "line": 86
2026-06-21T07:19:09.7098711Z             },
2026-06-21T07:19:09.7098813Z             {
2026-06-21T07:19:09.7099022Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7099126Z               "line": 120
2026-06-21T07:19:09.7099231Z             },
2026-06-21T07:19:09.7099339Z             {
2026-06-21T07:19:09.7099476Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7099582Z               "line": 127
2026-06-21T07:19:09.7099682Z             },
2026-06-21T07:19:09.7099781Z             {
2026-06-21T07:19:09.7099925Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7100029Z               "line": 143
2026-06-21T07:19:09.7100130Z             },
2026-06-21T07:19:09.7100240Z             {
2026-06-21T07:19:09.7100382Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T07:19:09.7100493Z               "line": 16
2026-06-21T07:19:09.7100592Z             }
2026-06-21T07:19:09.7100682Z           ]
2026-06-21T07:19:09.7100789Z         },
2026-06-21T07:19:09.7100893Z         "int": {
2026-06-21T07:19:09.7101002Z           "complete": false,
2026-06-21T07:19:09.7101113Z           "evidence": []
2026-06-21T07:19:09.7104157Z         },
2026-06-21T07:19:09.7104299Z         "unit": {
2026-06-21T07:19:09.7104413Z           "complete": true,
2026-06-21T07:19:09.7104545Z           "evidence": [
2026-06-21T07:19:09.7104636Z             {
2026-06-21T07:19:09.7104803Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7104913Z               "line": 199
2026-06-21T07:19:09.7105009Z             },
2026-06-21T07:19:09.7105118Z             {
2026-06-21T07:19:09.7105276Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7105380Z               "line": 218
2026-06-21T07:19:09.7105480Z             },
2026-06-21T07:19:09.7105581Z             {
2026-06-21T07:19:09.7105728Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7105833Z               "line": 234
2026-06-21T07:19:09.7105939Z             },
2026-06-21T07:19:09.7106038Z             {
2026-06-21T07:19:09.7106181Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T07:19:09.7106277Z               "line": 256
2026-06-21T07:19:09.7106381Z             },
2026-06-21T07:19:09.7106481Z             {
2026-06-21T07:19:09.7106758Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T07:19:09.7106874Z               "line": 124
2026-06-21T07:19:09.7106973Z             },
2026-06-21T07:19:09.7107076Z             {
2026-06-21T07:19:09.7107215Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T07:19:09.7107318Z               "line": 140
2026-06-21T07:19:09.7107537Z             },
2026-06-21T07:19:09.7107637Z             {
2026-06-21T07:19:09.7107780Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T07:19:09.7107885Z               "line": 155
2026-06-21T07:19:09.7107985Z             }
2026-06-21T07:19:09.7108079Z           ]
2026-06-21T07:19:09.7108190Z         }
2026-06-21T07:19:09.7108286Z       }
2026-06-21T07:19:09.7108389Z     },
2026-06-21T07:19:09.7108496Z     {
2026-06-21T07:19:09.7108600Z       "id": "REQ-NOTIF-1",
2026-06-21T07:19:09.7109102Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T07:19:09.7109211Z       "requiredStages": [
2026-06-21T07:19:09.7109316Z         "impl",
2026-06-21T07:19:09.7109421Z         "unit",
2026-06-21T07:19:09.7109521Z         "int"
2026-06-21T07:19:09.7109624Z       ],
2026-06-21T07:19:09.7109724Z       "stages": {
2026-06-21T07:19:09.7109829Z         "doc": {
2026-06-21T07:19:09.7109946Z           "complete": false,
2026-06-21T07:19:09.7110051Z           "evidence": []
2026-06-21T07:19:09.7110152Z         },
2026-06-21T07:19:09.7110256Z         "impl": {
2026-06-21T07:19:09.7110370Z           "complete": true,
2026-06-21T07:19:09.7110476Z           "evidence": [
2026-06-21T07:19:09.7110585Z             {
2026-06-21T07:19:09.7110729Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7110843Z               "line": 514
2026-06-21T07:19:09.7110942Z             },
2026-06-21T07:19:09.7111043Z             {
2026-06-21T07:19:09.7111186Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7111286Z               "line": 30
2026-06-21T07:19:09.7111387Z             },
2026-06-21T07:19:09.7111496Z             {
2026-06-21T07:19:09.7111634Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7111735Z               "line": 69
2026-06-21T07:19:09.7111839Z             },
2026-06-21T07:19:09.7111940Z             {
2026-06-21T07:19:09.7112073Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7112192Z               "line": 93
2026-06-21T07:19:09.7112293Z             },
2026-06-21T07:19:09.7112384Z             {
2026-06-21T07:19:09.7112525Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7112630Z               "line": 107
2026-06-21T07:19:09.7112736Z             },
2026-06-21T07:19:09.7112839Z             {
2026-06-21T07:19:09.7112983Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7113084Z               "line": 142
2026-06-21T07:19:09.7113177Z             },
2026-06-21T07:19:09.7113284Z             {
2026-06-21T07:19:09.7113422Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7113531Z               "line": 187
2026-06-21T07:19:09.7113627Z             },
2026-06-21T07:19:09.7113731Z             {
2026-06-21T07:19:09.7113879Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7113989Z               "line": 258
2026-06-21T07:19:09.7114093Z             },
2026-06-21T07:19:09.7114194Z             {
2026-06-21T07:19:09.7114327Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7114431Z               "line": 372
2026-06-21T07:19:09.7114538Z             },
2026-06-21T07:19:09.7114638Z             {
2026-06-21T07:19:09.7114770Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7114869Z               "line": 479
2026-06-21T07:19:09.7114973Z             },
2026-06-21T07:19:09.7115077Z             {
2026-06-21T07:19:09.7115225Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7115321Z               "line": 24
2026-06-21T07:19:09.7115521Z             },
2026-06-21T07:19:09.7115621Z             {
2026-06-21T07:19:09.7115768Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7115870Z               "line": 34
2026-06-21T07:19:09.7115979Z             },
2026-06-21T07:19:09.7116073Z             {
2026-06-21T07:19:09.7116326Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7116436Z               "line": 60
2026-06-21T07:19:09.7116541Z             },
2026-06-21T07:19:09.7116645Z             {
2026-06-21T07:19:09.7116785Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7116893Z               "line": 82
2026-06-21T07:19:09.7116998Z             },
2026-06-21T07:19:09.7117095Z             {
2026-06-21T07:19:09.7117241Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7117347Z               "line": 94
2026-06-21T07:19:09.7117453Z             },
2026-06-21T07:19:09.7117556Z             {
2026-06-21T07:19:09.7117708Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.7117822Z               "line": 96
2026-06-21T07:19:09.7117930Z             },
2026-06-21T07:19:09.7118035Z             {
2026-06-21T07:19:09.7118183Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T07:19:09.7118301Z               "line": 44
2026-06-21T07:19:09.7118403Z             },
2026-06-21T07:19:09.7118503Z             {
2026-06-21T07:19:09.7118649Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.7118746Z               "line": 20
2026-06-21T07:19:09.7118851Z             },
2026-06-21T07:19:09.7119027Z             {
2026-06-21T07:19:09.7119160Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.7119265Z               "line": 30
2026-06-21T07:19:09.7119371Z             },
2026-06-21T07:19:09.7119475Z             {
2026-06-21T07:19:09.7119613Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.7119719Z               "line": 50
2026-06-21T07:19:09.7119813Z             },
2026-06-21T07:19:09.7119918Z             {
2026-06-21T07:19:09.7120052Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7120156Z               "line": 28
2026-06-21T07:19:09.7120260Z             },
2026-06-21T07:19:09.7120365Z             {
2026-06-21T07:19:09.7120506Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7120611Z               "line": 126
2026-06-21T07:19:09.7120712Z             },
2026-06-21T07:19:09.7120812Z             {
2026-06-21T07:19:09.7120955Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7121064Z               "line": 161
2026-06-21T07:19:09.7121159Z             },
2026-06-21T07:19:09.7121265Z             {
2026-06-21T07:19:09.7121388Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7121497Z               "line": 202
2026-06-21T07:19:09.7121595Z             },
2026-06-21T07:19:09.7121698Z             {
2026-06-21T07:19:09.7121826Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7121933Z               "line": 213
2026-06-21T07:19:09.7122037Z             },
2026-06-21T07:19:09.7122136Z             {
2026-06-21T07:19:09.7122266Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7122375Z               "line": 238
2026-06-21T07:19:09.7122475Z             },
2026-06-21T07:19:09.7122581Z             {
2026-06-21T07:19:09.7122704Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7122815Z               "line": 261
2026-06-21T07:19:09.7122915Z             },
2026-06-21T07:19:09.7123018Z             {
2026-06-21T07:19:09.7123156Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7123271Z               "line": 86
2026-06-21T07:19:09.7123371Z             }
2026-06-21T07:19:09.7123475Z           ]
2026-06-21T07:19:09.7123582Z         },
2026-06-21T07:19:09.7123681Z         "int": {
2026-06-21T07:19:09.7123790Z           "complete": true,
2026-06-21T07:19:09.7123996Z           "evidence": [
2026-06-21T07:19:09.7124100Z             {
2026-06-21T07:19:09.7124253Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7124357Z               "line": 285
2026-06-21T07:19:09.7124464Z             },
2026-06-21T07:19:09.7124654Z             {
2026-06-21T07:19:09.7124807Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T07:19:09.7124911Z               "line": 145
2026-06-21T07:19:09.7125015Z             },
2026-06-21T07:19:09.7125117Z             {
2026-06-21T07:19:09.7125263Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7125376Z               "line": 684
2026-06-21T07:19:09.7125468Z             },
2026-06-21T07:19:09.7125571Z             {
2026-06-21T07:19:09.7125718Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7125824Z               "line": 1102
2026-06-21T07:19:09.7125928Z             }
2026-06-21T07:19:09.7126023Z           ]
2026-06-21T07:19:09.7126134Z         },
2026-06-21T07:19:09.7126233Z         "unit": {
2026-06-21T07:19:09.7126352Z           "complete": true,
2026-06-21T07:19:09.7126463Z           "evidence": [
2026-06-21T07:19:09.7126562Z             {
2026-06-21T07:19:09.7126706Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7126815Z               "line": 572
2026-06-21T07:19:09.7126919Z             },
2026-06-21T07:19:09.7127021Z             {
2026-06-21T07:19:09.7127158Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7127268Z               "line": 636
2026-06-21T07:19:09.7127360Z             },
2026-06-21T07:19:09.7127458Z             {
2026-06-21T07:19:09.7127592Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7127703Z               "line": 740
2026-06-21T07:19:09.7127801Z             },
2026-06-21T07:19:09.7127907Z             {
2026-06-21T07:19:09.7128042Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7128149Z               "line": 772
2026-06-21T07:19:09.7128258Z             },
2026-06-21T07:19:09.7128359Z             {
2026-06-21T07:19:09.7128500Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7128605Z               "line": 840
2026-06-21T07:19:09.7128710Z             },
2026-06-21T07:19:09.7128805Z             {
2026-06-21T07:19:09.7129025Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7129133Z               "line": 898
2026-06-21T07:19:09.7129239Z             },
2026-06-21T07:19:09.7129339Z             {
2026-06-21T07:19:09.7129462Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7129577Z               "line": 1173
2026-06-21T07:19:09.7129668Z             },
2026-06-21T07:19:09.7129758Z             {
2026-06-21T07:19:09.7129907Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7130016Z               "line": 157
2026-06-21T07:19:09.7130116Z             },
2026-06-21T07:19:09.7130217Z             {
2026-06-21T07:19:09.7130368Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7130483Z               "line": 250
2026-06-21T07:19:09.7130585Z             },
2026-06-21T07:19:09.7130688Z             {
2026-06-21T07:19:09.7130825Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T07:19:09.7130944Z               "line": 273
2026-06-21T07:19:09.7131047Z             },
2026-06-21T07:19:09.7131152Z             {
2026-06-21T07:19:09.7131301Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.7131409Z               "line": 355
2026-06-21T07:19:09.7131515Z             },
2026-06-21T07:19:09.7131610Z             {
2026-06-21T07:19:09.7131757Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T07:19:09.7131863Z               "line": 392
2026-06-21T07:19:09.7131968Z             },
2026-06-21T07:19:09.7132072Z             {
2026-06-21T07:19:09.7132220Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T07:19:09.7132430Z               "line": 131
2026-06-21T07:19:09.7132535Z             },
2026-06-21T07:19:09.7132640Z             {
2026-06-21T07:19:09.7132784Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.7132892Z               "line": 72
2026-06-21T07:19:09.7132988Z             },
2026-06-21T07:19:09.7133255Z             {
2026-06-21T07:19:09.7133399Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T07:19:09.7133499Z               "line": 97
2026-06-21T07:19:09.7133598Z             },
2026-06-21T07:19:09.7133707Z             {
2026-06-21T07:19:09.7133832Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7133945Z               "line": 379
2026-06-21T07:19:09.7134045Z             },
2026-06-21T07:19:09.7134147Z             {
2026-06-21T07:19:09.7134283Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7134390Z               "line": 417
2026-06-21T07:19:09.7134494Z             },
2026-06-21T07:19:09.7134594Z             {
2026-06-21T07:19:09.7134728Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7134832Z               "line": 433
2026-06-21T07:19:09.7134936Z             },
2026-06-21T07:19:09.7135038Z             {
2026-06-21T07:19:09.7135170Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7135280Z               "line": 472
2026-06-21T07:19:09.7135372Z             },
2026-06-21T07:19:09.7135476Z             {
2026-06-21T07:19:09.7135610Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7135716Z               "line": 489
2026-06-21T07:19:09.7135814Z             },
2026-06-21T07:19:09.7135923Z             {
2026-06-21T07:19:09.7136061Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7136164Z               "line": 517
2026-06-21T07:19:09.7136268Z             },
2026-06-21T07:19:09.7136360Z             {
2026-06-21T07:19:09.7136497Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T07:19:09.7136598Z               "line": 548
2026-06-21T07:19:09.7136703Z             },
2026-06-21T07:19:09.7136808Z             {
2026-06-21T07:19:09.7136942Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7137051Z               "line": 745
2026-06-21T07:19:09.7137150Z             }
2026-06-21T07:19:09.7137257Z           ]
2026-06-21T07:19:09.7137356Z         }
2026-06-21T07:19:09.7137451Z       }
2026-06-21T07:19:09.7137556Z     },
2026-06-21T07:19:09.7137648Z     {
2026-06-21T07:19:09.7137762Z       "id": "REQ-NOTIF-2",
2026-06-21T07:19:09.7138047Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T07:19:09.7138157Z       "requiredStages": [
2026-06-21T07:19:09.7138263Z         "doc",
2026-06-21T07:19:09.7138366Z         "impl",
2026-06-21T07:19:09.7138467Z         "unit",
2026-06-21T07:19:09.7138568Z         "int"
2026-06-21T07:19:09.7138677Z       ],
2026-06-21T07:19:09.7138776Z       "stages": {
2026-06-21T07:19:09.7138876Z         "doc": {
2026-06-21T07:19:09.7139064Z           "complete": true,
2026-06-21T07:19:09.7139160Z           "evidence": [
2026-06-21T07:19:09.7139256Z             {
2026-06-21T07:19:09.7139374Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7139474Z               "line": 509
2026-06-21T07:19:09.7139575Z             },
2026-06-21T07:19:09.7139679Z             {
2026-06-21T07:19:09.7139804Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.7139913Z               "line": 123
2026-06-21T07:19:09.7140017Z             }
2026-06-21T07:19:09.7140118Z           ]
2026-06-21T07:19:09.7140224Z         },
2026-06-21T07:19:09.7140323Z         "impl": {
2026-06-21T07:19:09.7140433Z           "complete": true,
2026-06-21T07:19:09.7140529Z           "evidence": [
2026-06-21T07:19:09.7140633Z             {
2026-06-21T07:19:09.7140777Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7140881Z               "line": 287
2026-06-21T07:19:09.7141087Z             },
2026-06-21T07:19:09.7141192Z             {
2026-06-21T07:19:09.7141328Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7141433Z               "line": 301
2026-06-21T07:19:09.7141532Z             },
2026-06-21T07:19:09.7141641Z             {
2026-06-21T07:19:09.7141775Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7141988Z               "line": 326
2026-06-21T07:19:09.7142090Z             },
2026-06-21T07:19:09.7142199Z             {
2026-06-21T07:19:09.7142351Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7142456Z               "line": 239
2026-06-21T07:19:09.7142566Z             },
2026-06-21T07:19:09.7142666Z             {
2026-06-21T07:19:09.7142814Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7142918Z               "line": 95
2026-06-21T07:19:09.7143024Z             },
2026-06-21T07:19:09.7143129Z             {
2026-06-21T07:19:09.7143257Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7143359Z               "line": 2225
2026-06-21T07:19:09.7143462Z             },
2026-06-21T07:19:09.7143567Z             {
2026-06-21T07:19:09.7143693Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7143800Z               "line": 2274
2026-06-21T07:19:09.7143901Z             },
2026-06-21T07:19:09.7144003Z             {
2026-06-21T07:19:09.7144129Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7144238Z               "line": 2353
2026-06-21T07:19:09.7144334Z             },
2026-06-21T07:19:09.7144435Z             {
2026-06-21T07:19:09.7144562Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7144668Z               "line": 2392
2026-06-21T07:19:09.7144768Z             }
2026-06-21T07:19:09.7144862Z           ]
2026-06-21T07:19:09.7144960Z         },
2026-06-21T07:19:09.7145068Z         "int": {
2026-06-21T07:19:09.7145177Z           "complete": true,
2026-06-21T07:19:09.7145288Z           "evidence": [
2026-06-21T07:19:09.7145397Z             {
2026-06-21T07:19:09.7145545Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7145660Z               "line": 810
2026-06-21T07:19:09.7145750Z             },
2026-06-21T07:19:09.7145855Z             {
2026-06-21T07:19:09.7145999Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7146112Z               "line": 1345
2026-06-21T07:19:09.7146218Z             }
2026-06-21T07:19:09.7146318Z           ]
2026-06-21T07:19:09.7146421Z         },
2026-06-21T07:19:09.7146526Z         "unit": {
2026-06-21T07:19:09.7146645Z           "complete": true,
2026-06-21T07:19:09.7146748Z           "evidence": [
2026-06-21T07:19:09.7146853Z             {
2026-06-21T07:19:09.7146997Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7147095Z               "line": 1022
2026-06-21T07:19:09.7147201Z             },
2026-06-21T07:19:09.7147301Z             {
2026-06-21T07:19:09.7147439Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7147555Z               "line": 1090
2026-06-21T07:19:09.7147659Z             },
2026-06-21T07:19:09.7147763Z             {
2026-06-21T07:19:09.7147888Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7147997Z               "line": 8210
2026-06-21T07:19:09.7148102Z             },
2026-06-21T07:19:09.7148208Z             {
2026-06-21T07:19:09.7148336Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7148451Z               "line": 8265
2026-06-21T07:19:09.7148551Z             }
2026-06-21T07:19:09.7148651Z           ]
2026-06-21T07:19:09.7148761Z         }
2026-06-21T07:19:09.7148861Z       }
2026-06-21T07:19:09.7149047Z     },
2026-06-21T07:19:09.7149148Z     {
2026-06-21T07:19:09.7149265Z       "id": "REQ-PAIR-1",
2026-06-21T07:19:09.7149393Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T07:19:09.7149503Z       "requiredStages": [
2026-06-21T07:19:09.7149610Z         "impl",
2026-06-21T07:19:09.7149715Z         "unit",
2026-06-21T07:19:09.7149920Z         "int"
2026-06-21T07:19:09.7150020Z       ],
2026-06-21T07:19:09.7150126Z       "stages": {
2026-06-21T07:19:09.7150231Z         "doc": {
2026-06-21T07:19:09.7150344Z           "complete": false,
2026-06-21T07:19:09.7150451Z           "evidence": []
2026-06-21T07:19:09.7150545Z         },
2026-06-21T07:19:09.7150746Z         "impl": {
2026-06-21T07:19:09.7150845Z           "complete": true,
2026-06-21T07:19:09.7150960Z           "evidence": [
2026-06-21T07:19:09.7151056Z             {
2026-06-21T07:19:09.7151222Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7151328Z               "line": 27
2026-06-21T07:19:09.7151423Z             },
2026-06-21T07:19:09.7151527Z             {
2026-06-21T07:19:09.7151676Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7151784Z               "line": 88
2026-06-21T07:19:09.7151889Z             },
2026-06-21T07:19:09.7151988Z             {
2026-06-21T07:19:09.7152143Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7152257Z               "line": 110
2026-06-21T07:19:09.7152359Z             },
2026-06-21T07:19:09.7152458Z             {
2026-06-21T07:19:09.7152616Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7152730Z               "line": 153
2026-06-21T07:19:09.7152825Z             },
2026-06-21T07:19:09.7152931Z             {
2026-06-21T07:19:09.7153079Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7153188Z               "line": 182
2026-06-21T07:19:09.7153289Z             },
2026-06-21T07:19:09.7153398Z             {
2026-06-21T07:19:09.7153555Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7153656Z               "line": 29
2026-06-21T07:19:09.7153755Z             },
2026-06-21T07:19:09.7153855Z             {
2026-06-21T07:19:09.7154027Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T07:19:09.7154137Z               "line": 31
2026-06-21T07:19:09.7154238Z             },
2026-06-21T07:19:09.7154337Z             {
2026-06-21T07:19:09.7154485Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7154591Z               "line": 44
2026-06-21T07:19:09.7154689Z             },
2026-06-21T07:19:09.7154798Z             {
2026-06-21T07:19:09.7154947Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7155047Z               "line": 171
2026-06-21T07:19:09.7155142Z             },
2026-06-21T07:19:09.7155233Z             {
2026-06-21T07:19:09.7155394Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7155500Z               "line": 376
2026-06-21T07:19:09.7155600Z             }
2026-06-21T07:19:09.7155709Z           ]
2026-06-21T07:19:09.7155796Z         },
2026-06-21T07:19:09.7155900Z         "int": {
2026-06-21T07:19:09.7156010Z           "complete": true,
2026-06-21T07:19:09.7156120Z           "evidence": [
2026-06-21T07:19:09.7156225Z             {
2026-06-21T07:19:09.7156367Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7156478Z               "line": 645
2026-06-21T07:19:09.7156582Z             },
2026-06-21T07:19:09.7156682Z             {
2026-06-21T07:19:09.7156826Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7156934Z               "line": 887
2026-06-21T07:19:09.7157039Z             }
2026-06-21T07:19:09.7157139Z           ]
2026-06-21T07:19:09.7157242Z         },
2026-06-21T07:19:09.7157346Z         "unit": {
2026-06-21T07:19:09.7157465Z           "complete": true,
2026-06-21T07:19:09.7157575Z           "evidence": [
2026-06-21T07:19:09.7157679Z             {
2026-06-21T07:19:09.7157824Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7157933Z               "line": 236
2026-06-21T07:19:09.7158037Z             },
2026-06-21T07:19:09.7158129Z             {
2026-06-21T07:19:09.7158281Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T07:19:09.7158448Z               "line": 349
2026-06-21T07:19:09.7158557Z             },
2026-06-21T07:19:09.7158653Z             {
2026-06-21T07:19:09.7158801Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7158906Z               "line": 194
2026-06-21T07:19:09.7159186Z             },
2026-06-21T07:19:09.7159292Z             {
2026-06-21T07:19:09.7159445Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7159554Z               "line": 216
2026-06-21T07:19:09.7159655Z             },
2026-06-21T07:19:09.7159764Z             {
2026-06-21T07:19:09.7159901Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7159992Z               "line": 230
2026-06-21T07:19:09.7160100Z             },
2026-06-21T07:19:09.7160198Z             {
2026-06-21T07:19:09.7160352Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7160457Z               "line": 242
2026-06-21T07:19:09.7160561Z             },
2026-06-21T07:19:09.7160662Z             {
2026-06-21T07:19:09.7160809Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7160924Z               "line": 256
2026-06-21T07:19:09.7161025Z             },
2026-06-21T07:19:09.7161129Z             {
2026-06-21T07:19:09.7161277Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7161377Z               "line": 270
2026-06-21T07:19:09.7161481Z             },
2026-06-21T07:19:09.7161578Z             {
2026-06-21T07:19:09.7161720Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7161830Z               "line": 277
2026-06-21T07:19:09.7161931Z             },
2026-06-21T07:19:09.7162035Z             {
2026-06-21T07:19:09.7162178Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T07:19:09.7162289Z               "line": 295
2026-06-21T07:19:09.7162392Z             },
2026-06-21T07:19:09.7162500Z             {
2026-06-21T07:19:09.7162644Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7162756Z               "line": 968
2026-06-21T07:19:09.7162861Z             },
2026-06-21T07:19:09.7162962Z             {
2026-06-21T07:19:09.7163114Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7163229Z               "line": 1051
2026-06-21T07:19:09.7163334Z             },
2026-06-21T07:19:09.7163438Z             {
2026-06-21T07:19:09.7163586Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7163700Z               "line": 1121
2026-06-21T07:19:09.7163801Z             },
2026-06-21T07:19:09.7163906Z             {
2026-06-21T07:19:09.7164043Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7164149Z               "line": 1182
2026-06-21T07:19:09.7164244Z             },
2026-06-21T07:19:09.7164348Z             {
2026-06-21T07:19:09.7164498Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7164610Z               "line": 1238
2026-06-21T07:19:09.7164711Z             },
2026-06-21T07:19:09.7164818Z             {
2026-06-21T07:19:09.7164969Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7165080Z               "line": 1457
2026-06-21T07:19:09.7165184Z             }
2026-06-21T07:19:09.7165287Z           ]
2026-06-21T07:19:09.7165382Z         }
2026-06-21T07:19:09.7165478Z       }
2026-06-21T07:19:09.7165569Z     },
2026-06-21T07:19:09.7165677Z     {
2026-06-21T07:19:09.7165779Z       "id": "REQ-PAIR-2",
2026-06-21T07:19:09.7165950Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T07:19:09.7166070Z       "requiredStages": [],
2026-06-21T07:19:09.7166174Z       "stages": {
2026-06-21T07:19:09.7166283Z         "doc": {
2026-06-21T07:19:09.7166389Z           "complete": false,
2026-06-21T07:19:09.7166494Z           "evidence": []
2026-06-21T07:19:09.7166603Z         },
2026-06-21T07:19:09.7166818Z         "impl": {
2026-06-21T07:19:09.7166937Z           "complete": false,
2026-06-21T07:19:09.7167048Z           "evidence": []
2026-06-21T07:19:09.7167151Z         },
2026-06-21T07:19:09.7167252Z         "int": {
2026-06-21T07:19:09.7167358Z           "complete": false,
2026-06-21T07:19:09.7167466Z           "evidence": []
2026-06-21T07:19:09.7167651Z         },
2026-06-21T07:19:09.7167755Z         "unit": {
2026-06-21T07:19:09.7167864Z           "complete": false,
2026-06-21T07:19:09.7167968Z           "evidence": []
2026-06-21T07:19:09.7168060Z         }
2026-06-21T07:19:09.7168164Z       }
2026-06-21T07:19:09.7168254Z     },
2026-06-21T07:19:09.7168355Z     {
2026-06-21T07:19:09.7168474Z       "id": "REQ-PAIR-3",
2026-06-21T07:19:09.7168651Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T07:19:09.7168770Z       "requiredStages": [
2026-06-21T07:19:09.7168869Z         "impl",
2026-06-21T07:19:09.7169042Z         "unit"
2026-06-21T07:19:09.7169141Z       ],
2026-06-21T07:19:09.7169261Z       "stages": {
2026-06-21T07:19:09.7169370Z         "doc": {
2026-06-21T07:19:09.7169480Z           "complete": false,
2026-06-21T07:19:09.7169586Z           "evidence": []
2026-06-21T07:19:09.7169690Z         },
2026-06-21T07:19:09.7169799Z         "impl": {
2026-06-21T07:19:09.7169901Z           "complete": true,
2026-06-21T07:19:09.7170019Z           "evidence": [
2026-06-21T07:19:09.7170124Z             {
2026-06-21T07:19:09.7170254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7170357Z               "line": 3259
2026-06-21T07:19:09.7170442Z             },
2026-06-21T07:19:09.7170547Z             {
2026-06-21T07:19:09.7170674Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7170782Z               "line": 3328
2026-06-21T07:19:09.7170893Z             },
2026-06-21T07:19:09.7170994Z             {
2026-06-21T07:19:09.7171116Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7171222Z               "line": 3709
2026-06-21T07:19:09.7171327Z             },
2026-06-21T07:19:09.7171431Z             {
2026-06-21T07:19:09.7171556Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7171666Z               "line": 4961
2026-06-21T07:19:09.7171760Z             }
2026-06-21T07:19:09.7171861Z           ]
2026-06-21T07:19:09.7171965Z         },
2026-06-21T07:19:09.7172070Z         "int": {
2026-06-21T07:19:09.7172176Z           "complete": false,
2026-06-21T07:19:09.7172289Z           "evidence": []
2026-06-21T07:19:09.7172395Z         },
2026-06-21T07:19:09.7172500Z         "unit": {
2026-06-21T07:19:09.7172614Z           "complete": true,
2026-06-21T07:19:09.7172714Z           "evidence": [
2026-06-21T07:19:09.7172820Z             {
2026-06-21T07:19:09.7172947Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7173051Z               "line": 9964
2026-06-21T07:19:09.7173156Z             },
2026-06-21T07:19:09.7173255Z             {
2026-06-21T07:19:09.7173378Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7173489Z               "line": 10179
2026-06-21T07:19:09.7173593Z             },
2026-06-21T07:19:09.7173693Z             {
2026-06-21T07:19:09.7173827Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7173936Z               "line": 10838
2026-06-21T07:19:09.7174036Z             },
2026-06-21T07:19:09.7174142Z             {
2026-06-21T07:19:09.7174260Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7174376Z               "line": 10857
2026-06-21T07:19:09.7174485Z             },
2026-06-21T07:19:09.7174580Z             {
2026-06-21T07:19:09.7174705Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7174804Z               "line": 10881
2026-06-21T07:19:09.7174904Z             },
2026-06-21T07:19:09.7175010Z             {
2026-06-21T07:19:09.7175129Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7175233Z               "line": 10900
2026-06-21T07:19:09.7175339Z             },
2026-06-21T07:19:09.7175448Z             {
2026-06-21T07:19:09.7175678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7175782Z               "line": 10913
2026-06-21T07:19:09.7175876Z             },
2026-06-21T07:19:09.7175981Z             {
2026-06-21T07:19:09.7176111Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7176305Z               "line": 10922
2026-06-21T07:19:09.7176410Z             }
2026-06-21T07:19:09.7176500Z           ]
2026-06-21T07:19:09.7176606Z         }
2026-06-21T07:19:09.7176701Z       }
2026-06-21T07:19:09.7176805Z     },
2026-06-21T07:19:09.7176901Z     {
2026-06-21T07:19:09.7177016Z       "id": "REQ-PAIR-4",
2026-06-21T07:19:09.7177158Z       "title": "Subnet naming on first pairing",
2026-06-21T07:19:09.7177269Z       "requiredStages": [
2026-06-21T07:19:09.7177378Z         "impl",
2026-06-21T07:19:09.7177478Z         "unit"
2026-06-21T07:19:09.7177584Z       ],
2026-06-21T07:19:09.7177683Z       "stages": {
2026-06-21T07:19:09.7177788Z         "doc": {
2026-06-21T07:19:09.7177903Z           "complete": false,
2026-06-21T07:19:09.7178008Z           "evidence": []
2026-06-21T07:19:09.7178111Z         },
2026-06-21T07:19:09.7178211Z         "impl": {
2026-06-21T07:19:09.7178325Z           "complete": true,
2026-06-21T07:19:09.7178433Z           "evidence": [
2026-06-21T07:19:09.7178533Z             {
2026-06-21T07:19:09.7178677Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T07:19:09.7178781Z               "line": 174
2026-06-21T07:19:09.7178882Z             }
2026-06-21T07:19:09.7179034Z           ]
2026-06-21T07:19:09.7179148Z         },
2026-06-21T07:19:09.7179249Z         "int": {
2026-06-21T07:19:09.7182049Z           "complete": false,
2026-06-21T07:19:09.7182164Z           "evidence": []
2026-06-21T07:19:09.7182263Z         },
2026-06-21T07:19:09.7182368Z         "unit": {
2026-06-21T07:19:09.7182469Z           "complete": true,
2026-06-21T07:19:09.7182588Z           "evidence": [
2026-06-21T07:19:09.7182688Z             {
2026-06-21T07:19:09.7182864Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7182974Z               "line": 1294
2026-06-21T07:19:09.7183080Z             }
2026-06-21T07:19:09.7183183Z           ]
2026-06-21T07:19:09.7183279Z         }
2026-06-21T07:19:09.7183385Z       }
2026-06-21T07:19:09.7183479Z     },
2026-06-21T07:19:09.7183583Z     {
2026-06-21T07:19:09.7183693Z       "id": "REQ-PAIR-5",
2026-06-21T07:19:09.7184034Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T07:19:09.7184144Z       "requiredStages": [
2026-06-21T07:19:09.7184248Z         "impl",
2026-06-21T07:19:09.7184354Z         "unit",
2026-06-21T07:19:09.7184454Z         "int"
2026-06-21T07:19:09.7184553Z       ],
2026-06-21T07:19:09.7184654Z       "stages": {
2026-06-21T07:19:09.7184754Z         "doc": {
2026-06-21T07:19:09.7184863Z           "complete": false,
2026-06-21T07:19:09.7184969Z           "evidence": []
2026-06-21T07:19:09.7185068Z         },
2026-06-21T07:19:09.7185173Z         "impl": {
2026-06-21T07:19:09.7185275Z           "complete": true,
2026-06-21T07:19:09.7185383Z           "evidence": [
2026-06-21T07:19:09.7185488Z             {
2026-06-21T07:19:09.7185647Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7185750Z               "line": 44
2026-06-21T07:19:09.7185860Z             },
2026-06-21T07:19:09.7185957Z             {
2026-06-21T07:19:09.7186113Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7186224Z               "line": 96
2026-06-21T07:19:09.7186323Z             },
2026-06-21T07:19:09.7186431Z             {
2026-06-21T07:19:09.7186584Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7186699Z               "line": 107
2026-06-21T07:19:09.7186798Z             },
2026-06-21T07:19:09.7186899Z             {
2026-06-21T07:19:09.7187051Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7187151Z               "line": 124
2026-06-21T07:19:09.7187380Z             },
2026-06-21T07:19:09.7187485Z             {
2026-06-21T07:19:09.7187633Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7187742Z               "line": 155
2026-06-21T07:19:09.7187843Z             },
2026-06-21T07:19:09.7188043Z             {
2026-06-21T07:19:09.7188192Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7188295Z               "line": 195
2026-06-21T07:19:09.7188396Z             },
2026-06-21T07:19:09.7188497Z             {
2026-06-21T07:19:09.7188652Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7188757Z               "line": 251
2026-06-21T07:19:09.7188866Z             },
2026-06-21T07:19:09.7189036Z             {
2026-06-21T07:19:09.7189199Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7189308Z               "line": 33
2026-06-21T07:19:09.7189437Z             },
2026-06-21T07:19:09.7189537Z             {
2026-06-21T07:19:09.7189718Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7189823Z               "line": 45
2026-06-21T07:19:09.7189923Z             },
2026-06-21T07:19:09.7190018Z             {
2026-06-21T07:19:09.7190176Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7190271Z               "line": 59
2026-06-21T07:19:09.7190376Z             },
2026-06-21T07:19:09.7190471Z             {
2026-06-21T07:19:09.7190619Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7190716Z               "line": 376
2026-06-21T07:19:09.7190814Z             }
2026-06-21T07:19:09.7190915Z           ]
2026-06-21T07:19:09.7191011Z         },
2026-06-21T07:19:09.7191115Z         "int": {
2026-06-21T07:19:09.7191220Z           "complete": true,
2026-06-21T07:19:09.7191335Z           "evidence": [
2026-06-21T07:19:09.7191426Z             {
2026-06-21T07:19:09.7191571Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7191682Z               "line": 887
2026-06-21T07:19:09.7191780Z             },
2026-06-21T07:19:09.7191879Z             {
2026-06-21T07:19:09.7192023Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7192123Z               "line": 342
2026-06-21T07:19:09.7192222Z             }
2026-06-21T07:19:09.7192324Z           ]
2026-06-21T07:19:09.7192424Z         },
2026-06-21T07:19:09.7192523Z         "unit": {
2026-06-21T07:19:09.7192629Z           "complete": true,
2026-06-21T07:19:09.7192733Z           "evidence": [
2026-06-21T07:19:09.7192833Z             {
2026-06-21T07:19:09.7192982Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7193086Z               "line": 293
2026-06-21T07:19:09.7193190Z             },
2026-06-21T07:19:09.7193292Z             {
2026-06-21T07:19:09.7193438Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7193534Z               "line": 304
2026-06-21T07:19:09.7193644Z             },
2026-06-21T07:19:09.7193748Z             {
2026-06-21T07:19:09.7193907Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7194053Z               "line": 406
2026-06-21T07:19:09.7194148Z             },
2026-06-21T07:19:09.7194258Z             {
2026-06-21T07:19:09.7194408Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7194517Z               "line": 72
2026-06-21T07:19:09.7194619Z             },
2026-06-21T07:19:09.7194728Z             {
2026-06-21T07:19:09.7194890Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7194995Z               "line": 82
2026-06-21T07:19:09.7195103Z             },
2026-06-21T07:19:09.7195191Z             {
2026-06-21T07:19:09.7195348Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7195452Z               "line": 100
2026-06-21T07:19:09.7195558Z             },
2026-06-21T07:19:09.7195752Z             {
2026-06-21T07:19:09.7195901Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7196011Z               "line": 110
2026-06-21T07:19:09.7196111Z             },
2026-06-21T07:19:09.7196211Z             {
2026-06-21T07:19:09.7196363Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T07:19:09.7196564Z               "line": 125
2026-06-21T07:19:09.7196659Z             },
2026-06-21T07:19:09.7196760Z             {
2026-06-21T07:19:09.7196916Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7197024Z               "line": 1044
2026-06-21T07:19:09.7197125Z             },
2026-06-21T07:19:09.7197231Z             {
2026-06-21T07:19:09.7197368Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7197464Z               "line": 1110
2026-06-21T07:19:09.7197569Z             },
2026-06-21T07:19:09.7197673Z             {
2026-06-21T07:19:09.7197822Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7197931Z               "line": 1357
2026-06-21T07:19:09.7198036Z             }
2026-06-21T07:19:09.7198136Z           ]
2026-06-21T07:19:09.7198241Z         }
2026-06-21T07:19:09.7198345Z       }
2026-06-21T07:19:09.7198447Z     },
2026-06-21T07:19:09.7198546Z     {
2026-06-21T07:19:09.7198665Z       "id": "REQ-PAIR-6",
2026-06-21T07:19:09.7199043Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T07:19:09.7199156Z       "requiredStages": [
2026-06-21T07:19:09.7199260Z         "impl",
2026-06-21T07:19:09.7199374Z         "unit"
2026-06-21T07:19:09.7199483Z       ],
2026-06-21T07:19:09.7199587Z       "stages": {
2026-06-21T07:19:09.7199692Z         "doc": {
2026-06-21T07:19:09.7199797Z           "complete": false,
2026-06-21T07:19:09.7199901Z           "evidence": []
2026-06-21T07:19:09.7199997Z         },
2026-06-21T07:19:09.7200092Z         "impl": {
2026-06-21T07:19:09.7200197Z           "complete": true,
2026-06-21T07:19:09.7200302Z           "evidence": [
2026-06-21T07:19:09.7200407Z             {
2026-06-21T07:19:09.7200540Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7200646Z               "line": 3328
2026-06-21T07:19:09.7200746Z             },
2026-06-21T07:19:09.7200850Z             {
2026-06-21T07:19:09.7200975Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7201074Z               "line": 3709
2026-06-21T07:19:09.7201179Z             },
2026-06-21T07:19:09.7201281Z             {
2026-06-21T07:19:09.7201417Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.7201527Z               "line": 18
2026-06-21T07:19:09.7201624Z             },
2026-06-21T07:19:09.7201727Z             {
2026-06-21T07:19:09.7201847Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.7201953Z               "line": 49
2026-06-21T07:19:09.7202046Z             },
2026-06-21T07:19:09.7202150Z             {
2026-06-21T07:19:09.7202280Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.7202387Z               "line": 318
2026-06-21T07:19:09.7202491Z             }
2026-06-21T07:19:09.7202593Z           ]
2026-06-21T07:19:09.7202697Z         },
2026-06-21T07:19:09.7202797Z         "int": {
2026-06-21T07:19:09.7202912Z           "complete": false,
2026-06-21T07:19:09.7203017Z           "evidence": []
2026-06-21T07:19:09.7203112Z         },
2026-06-21T07:19:09.7203218Z         "unit": {
2026-06-21T07:19:09.7203327Z           "complete": true,
2026-06-21T07:19:09.7203431Z           "evidence": [
2026-06-21T07:19:09.7203537Z             {
2026-06-21T07:19:09.7203656Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7203765Z               "line": 10935
2026-06-21T07:19:09.7203866Z             },
2026-06-21T07:19:09.7203965Z             {
2026-06-21T07:19:09.7204094Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7204195Z               "line": 10952
2026-06-21T07:19:09.7204419Z             },
2026-06-21T07:19:09.7204515Z             {
2026-06-21T07:19:09.7204656Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.7204756Z               "line": 383
2026-06-21T07:19:09.7204860Z             },
2026-06-21T07:19:09.7204964Z             {
2026-06-21T07:19:09.7205193Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T07:19:09.7205302Z               "line": 392
2026-06-21T07:19:09.7205402Z             }
2026-06-21T07:19:09.7205493Z           ]
2026-06-21T07:19:09.7205593Z         }
2026-06-21T07:19:09.7205688Z       }
2026-06-21T07:19:09.7205775Z     },
2026-06-21T07:19:09.7205879Z     {
2026-06-21T07:19:09.7205992Z       "id": "REQ-PAIR-7",
2026-06-21T07:19:09.7206179Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T07:19:09.7206294Z       "requiredStages": [],
2026-06-21T07:19:09.7206390Z       "stages": {
2026-06-21T07:19:09.7206494Z         "doc": {
2026-06-21T07:19:09.7206604Z           "complete": false,
2026-06-21T07:19:09.7206710Z           "evidence": []
2026-06-21T07:19:09.7206809Z         },
2026-06-21T07:19:09.7206904Z         "impl": {
2026-06-21T07:19:09.7207015Z           "complete": false,
2026-06-21T07:19:09.7207124Z           "evidence": []
2026-06-21T07:19:09.7207224Z         },
2026-06-21T07:19:09.7207330Z         "int": {
2026-06-21T07:19:09.7207439Z           "complete": false,
2026-06-21T07:19:09.7207546Z           "evidence": []
2026-06-21T07:19:09.7207637Z         },
2026-06-21T07:19:09.7207734Z         "unit": {
2026-06-21T07:19:09.7207843Z           "complete": false,
2026-06-21T07:19:09.7207947Z           "evidence": []
2026-06-21T07:19:09.7208048Z         }
2026-06-21T07:19:09.7208143Z       }
2026-06-21T07:19:09.7208247Z     },
2026-06-21T07:19:09.7208349Z     {
2026-06-21T07:19:09.7208468Z       "id": "REQ-PAIR-8",
2026-06-21T07:19:09.7210001Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T07:19:09.7210142Z       "requiredStages": [
2026-06-21T07:19:09.7210252Z         "impl",
2026-06-21T07:19:09.7210358Z         "unit"
2026-06-21T07:19:09.7210461Z       ],
2026-06-21T07:19:09.7210566Z       "stages": {
2026-06-21T07:19:09.7210672Z         "doc": {
2026-06-21T07:19:09.7210776Z           "complete": false,
2026-06-21T07:19:09.7210892Z           "evidence": []
2026-06-21T07:19:09.7210986Z         },
2026-06-21T07:19:09.7211090Z         "impl": {
2026-06-21T07:19:09.7211206Z           "complete": true,
2026-06-21T07:19:09.7211301Z           "evidence": [
2026-06-21T07:19:09.7211400Z             {
2026-06-21T07:19:09.7211545Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7211659Z               "line": 577
2026-06-21T07:19:09.7211763Z             },
2026-06-21T07:19:09.7211865Z             {
2026-06-21T07:19:09.7212025Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7212117Z               "line": 22
2026-06-21T07:19:09.7212227Z             },
2026-06-21T07:19:09.7212331Z             {
2026-06-21T07:19:09.7212480Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7212588Z               "line": 76
2026-06-21T07:19:09.7212692Z             },
2026-06-21T07:19:09.7212787Z             {
2026-06-21T07:19:09.7212938Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7213047Z               "line": 127
2026-06-21T07:19:09.7213143Z             }
2026-06-21T07:19:09.7213244Z           ]
2026-06-21T07:19:09.7213343Z         },
2026-06-21T07:19:09.7213429Z         "int": {
2026-06-21T07:19:09.7213549Z           "complete": false,
2026-06-21T07:19:09.7213648Z           "evidence": []
2026-06-21T07:19:09.7213858Z         },
2026-06-21T07:19:09.7213962Z         "unit": {
2026-06-21T07:19:09.7214073Z           "complete": true,
2026-06-21T07:19:09.7214177Z           "evidence": [
2026-06-21T07:19:09.7214277Z             {
2026-06-21T07:19:09.7214422Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7214611Z               "line": 183
2026-06-21T07:19:09.7214708Z             },
2026-06-21T07:19:09.7214798Z             {
2026-06-21T07:19:09.7214950Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7215052Z               "line": 195
2026-06-21T07:19:09.7215150Z             },
2026-06-21T07:19:09.7215254Z             {
2026-06-21T07:19:09.7215402Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7215509Z               "line": 211
2026-06-21T07:19:09.7215613Z             },
2026-06-21T07:19:09.7215715Z             {
2026-06-21T07:19:09.7215857Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T07:19:09.7215967Z               "line": 227
2026-06-21T07:19:09.7216073Z             }
2026-06-21T07:19:09.7216176Z           ]
2026-06-21T07:19:09.7216282Z         }
2026-06-21T07:19:09.7216382Z       }
2026-06-21T07:19:09.7216477Z     },
2026-06-21T07:19:09.7216577Z     {
2026-06-21T07:19:09.7216687Z       "id": "REQ-PICKER-1",
2026-06-21T07:19:09.7220447Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T07:19:09.7220594Z       "requiredStages": [
2026-06-21T07:19:09.7220697Z         "impl",
2026-06-21T07:19:09.7220798Z         "unit"
2026-06-21T07:19:09.7220894Z       ],
2026-06-21T07:19:09.7220992Z       "stages": {
2026-06-21T07:19:09.7221098Z         "doc": {
2026-06-21T07:19:09.7221203Z           "complete": false,
2026-06-21T07:19:09.7221317Z           "evidence": []
2026-06-21T07:19:09.7221408Z         },
2026-06-21T07:19:09.7221518Z         "impl": {
2026-06-21T07:19:09.7221627Z           "complete": true,
2026-06-21T07:19:09.7221733Z           "evidence": [
2026-06-21T07:19:09.7221838Z             {
2026-06-21T07:19:09.7221984Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7222090Z               "line": 248
2026-06-21T07:19:09.7222190Z             },
2026-06-21T07:19:09.7222294Z             {
2026-06-21T07:19:09.7222434Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7222537Z               "line": 263
2026-06-21T07:19:09.7222638Z             }
2026-06-21T07:19:09.7222740Z           ]
2026-06-21T07:19:09.7222838Z         },
2026-06-21T07:19:09.7222938Z         "int": {
2026-06-21T07:19:09.7223045Z           "complete": false,
2026-06-21T07:19:09.7223158Z           "evidence": []
2026-06-21T07:19:09.7223248Z         },
2026-06-21T07:19:09.7223352Z         "unit": {
2026-06-21T07:19:09.7223461Z           "complete": true,
2026-06-21T07:19:09.7223569Z           "evidence": [
2026-06-21T07:19:09.7223775Z             {
2026-06-21T07:19:09.7223912Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7224023Z               "line": 476
2026-06-21T07:19:09.7224124Z             },
2026-06-21T07:19:09.7224227Z             {
2026-06-21T07:19:09.7224362Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7224566Z               "line": 753
2026-06-21T07:19:09.7224667Z             },
2026-06-21T07:19:09.7224771Z             {
2026-06-21T07:19:09.7224914Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7225015Z               "line": 886
2026-06-21T07:19:09.7225119Z             },
2026-06-21T07:19:09.7225210Z             {
2026-06-21T07:19:09.7225353Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7225458Z               "line": 455
2026-06-21T07:19:09.7225559Z             }
2026-06-21T07:19:09.7225664Z           ]
2026-06-21T07:19:09.7225762Z         }
2026-06-21T07:19:09.7225866Z       }
2026-06-21T07:19:09.7225972Z     },
2026-06-21T07:19:09.7226069Z     {
2026-06-21T07:19:09.7226173Z       "id": "REQ-PICKER-2",
2026-06-21T07:19:09.7228174Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T07:19:09.7228305Z       "requiredStages": [
2026-06-21T07:19:09.7228406Z         "impl",
2026-06-21T07:19:09.7228503Z         "unit"
2026-06-21T07:19:09.7228601Z       ],
2026-06-21T07:19:09.7228704Z       "stages": {
2026-06-21T07:19:09.7228806Z         "doc": {
2026-06-21T07:19:09.7228911Z           "complete": false,
2026-06-21T07:19:09.7229106Z           "evidence": []
2026-06-21T07:19:09.7229216Z         },
2026-06-21T07:19:09.7229315Z         "impl": {
2026-06-21T07:19:09.7229431Z           "complete": true,
2026-06-21T07:19:09.7229531Z           "evidence": [
2026-06-21T07:19:09.7229635Z             {
2026-06-21T07:19:09.7229784Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7229897Z               "line": 183
2026-06-21T07:19:09.7229997Z             },
2026-06-21T07:19:09.7230094Z             {
2026-06-21T07:19:09.7230231Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7230336Z               "line": 296
2026-06-21T07:19:09.7230442Z             }
2026-06-21T07:19:09.7230546Z           ]
2026-06-21T07:19:09.7230646Z         },
2026-06-21T07:19:09.7230752Z         "int": {
2026-06-21T07:19:09.7230855Z           "complete": false,
2026-06-21T07:19:09.7230969Z           "evidence": []
2026-06-21T07:19:09.7231074Z         },
2026-06-21T07:19:09.7231177Z         "unit": {
2026-06-21T07:19:09.7231286Z           "complete": true,
2026-06-21T07:19:09.7231401Z           "evidence": [
2026-06-21T07:19:09.7231496Z             {
2026-06-21T07:19:09.7231643Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7231773Z               "line": 655
2026-06-21T07:19:09.7231886Z             }
2026-06-21T07:19:09.7231993Z           ]
2026-06-21T07:19:09.7232088Z         }
2026-06-21T07:19:09.7232192Z       }
2026-06-21T07:19:09.7232298Z     },
2026-06-21T07:19:09.7232398Z     {
2026-06-21T07:19:09.7232512Z       "id": "REQ-PICKER-3",
2026-06-21T07:19:09.7235059Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T07:19:09.7235383Z       "requiredStages": [
2026-06-21T07:19:09.7235494Z         "impl",
2026-06-21T07:19:09.7235594Z         "unit"
2026-06-21T07:19:09.7235698Z       ],
2026-06-21T07:19:09.7235809Z       "stages": {
2026-06-21T07:19:09.7235904Z         "doc": {
2026-06-21T07:19:09.7236023Z           "complete": false,
2026-06-21T07:19:09.7236134Z           "evidence": []
2026-06-21T07:19:09.7236243Z         },
2026-06-21T07:19:09.7236351Z         "impl": {
2026-06-21T07:19:09.7236460Z           "complete": true,
2026-06-21T07:19:09.7236578Z           "evidence": [
2026-06-21T07:19:09.7236672Z             {
2026-06-21T07:19:09.7236811Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7236907Z               "line": 124
2026-06-21T07:19:09.7237015Z             }
2026-06-21T07:19:09.7237121Z           ]
2026-06-21T07:19:09.7237226Z         },
2026-06-21T07:19:09.7237330Z         "int": {
2026-06-21T07:19:09.7237441Z           "complete": false,
2026-06-21T07:19:09.7237550Z           "evidence": []
2026-06-21T07:19:09.7237649Z         },
2026-06-21T07:19:09.7237760Z         "unit": {
2026-06-21T07:19:09.7237879Z           "complete": true,
2026-06-21T07:19:09.7237984Z           "evidence": [
2026-06-21T07:19:09.7238085Z             {
2026-06-21T07:19:09.7238223Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7238322Z               "line": 369
2026-06-21T07:19:09.7238428Z             }
2026-06-21T07:19:09.7238531Z           ]
2026-06-21T07:19:09.7238637Z         }
2026-06-21T07:19:09.7238734Z       }
2026-06-21T07:19:09.7238836Z     },
2026-06-21T07:19:09.7238923Z     {
2026-06-21T07:19:09.7239128Z       "id": "REQ-PICKER-4",
2026-06-21T07:19:09.7241096Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T07:19:09.7241201Z       "requiredStages": [
2026-06-21T07:19:09.7241307Z         "impl",
2026-06-21T07:19:09.7241415Z         "unit"
2026-06-21T07:19:09.7241524Z       ],
2026-06-21T07:19:09.7241629Z       "stages": {
2026-06-21T07:19:09.7241732Z         "doc": {
2026-06-21T07:19:09.7241846Z           "complete": false,
2026-06-21T07:19:09.7241947Z           "evidence": []
2026-06-21T07:19:09.7242047Z         },
2026-06-21T07:19:09.7242151Z         "impl": {
2026-06-21T07:19:09.7242266Z           "complete": true,
2026-06-21T07:19:09.7242376Z           "evidence": [
2026-06-21T07:19:09.7242470Z             {
2026-06-21T07:19:09.7242620Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7242728Z               "line": 353
2026-06-21T07:19:09.7242834Z             },
2026-06-21T07:19:09.7242939Z             {
2026-06-21T07:19:09.7243081Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7243192Z               "line": 105
2026-06-21T07:19:09.7243286Z             }
2026-06-21T07:19:09.7243391Z           ]
2026-06-21T07:19:09.7243492Z         },
2026-06-21T07:19:09.7243592Z         "int": {
2026-06-21T07:19:09.7243812Z           "complete": false,
2026-06-21T07:19:09.7243930Z           "evidence": []
2026-06-21T07:19:09.7244035Z         },
2026-06-21T07:19:09.7244141Z         "unit": {
2026-06-21T07:19:09.7244250Z           "complete": true,
2026-06-21T07:19:09.7244353Z           "evidence": [
2026-06-21T07:19:09.7244548Z             {
2026-06-21T07:19:09.7244703Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7244818Z               "line": 1246
2026-06-21T07:19:09.7244919Z             },
2026-06-21T07:19:09.7245013Z             {
2026-06-21T07:19:09.7245158Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7245272Z               "line": 427
2026-06-21T07:19:09.7245361Z             }
2026-06-21T07:19:09.7245458Z           ]
2026-06-21T07:19:09.7245563Z         }
2026-06-21T07:19:09.7245666Z       }
2026-06-21T07:19:09.7245763Z     },
2026-06-21T07:19:09.7245867Z     {
2026-06-21T07:19:09.7245981Z       "id": "REQ-PICKER-5",
2026-06-21T07:19:09.7249197Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T07:19:09.7249332Z       "requiredStages": [
2026-06-21T07:19:09.7249435Z         "impl",
2026-06-21T07:19:09.7249541Z         "unit"
2026-06-21T07:19:09.7249647Z       ],
2026-06-21T07:19:09.7249749Z       "stages": {
2026-06-21T07:19:09.7249848Z         "doc": {
2026-06-21T07:19:09.7249964Z           "complete": false,
2026-06-21T07:19:09.7250068Z           "evidence": []
2026-06-21T07:19:09.7250178Z         },
2026-06-21T07:19:09.7250270Z         "impl": {
2026-06-21T07:19:09.7250388Z           "complete": true,
2026-06-21T07:19:09.7250512Z           "evidence": [
2026-06-21T07:19:09.7250622Z             {
2026-06-21T07:19:09.7250745Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7250856Z               "line": 1802
2026-06-21T07:19:09.7250965Z             }
2026-06-21T07:19:09.7251065Z           ]
2026-06-21T07:19:09.7251166Z         },
2026-06-21T07:19:09.7251266Z         "int": {
2026-06-21T07:19:09.7251380Z           "complete": false,
2026-06-21T07:19:09.7251481Z           "evidence": []
2026-06-21T07:19:09.7251585Z         },
2026-06-21T07:19:09.7251694Z         "unit": {
2026-06-21T07:19:09.7251805Z           "complete": true,
2026-06-21T07:19:09.7251910Z           "evidence": [
2026-06-21T07:19:09.7252009Z             {
2026-06-21T07:19:09.7252146Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7252250Z               "line": 7526
2026-06-21T07:19:09.7252359Z             }
2026-06-21T07:19:09.7252464Z           ]
2026-06-21T07:19:09.7252565Z         }
2026-06-21T07:19:09.7252669Z       }
2026-06-21T07:19:09.7252773Z     },
2026-06-21T07:19:09.7252875Z     {
2026-06-21T07:19:09.7253012Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T07:19:09.7254443Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T07:19:09.7254663Z       "requiredStages": [],
2026-06-21T07:19:09.7254768Z       "stages": {
2026-06-21T07:19:09.7254970Z         "doc": {
2026-06-21T07:19:09.7255080Z           "complete": false,
2026-06-21T07:19:09.7255193Z           "evidence": []
2026-06-21T07:19:09.7255297Z         },
2026-06-21T07:19:09.7255403Z         "impl": {
2026-06-21T07:19:09.7255507Z           "complete": false,
2026-06-21T07:19:09.7255612Z           "evidence": []
2026-06-21T07:19:09.7255718Z         },
2026-06-21T07:19:09.7255822Z         "int": {
2026-06-21T07:19:09.7255931Z           "complete": false,
2026-06-21T07:19:09.7256047Z           "evidence": []
2026-06-21T07:19:09.7256147Z         },
2026-06-21T07:19:09.7256256Z         "unit": {
2026-06-21T07:19:09.7256371Z           "complete": false,
2026-06-21T07:19:09.7256485Z           "evidence": []
2026-06-21T07:19:09.7256590Z         }
2026-06-21T07:19:09.7256681Z       }
2026-06-21T07:19:09.7256780Z     },
2026-06-21T07:19:09.7256876Z     {
2026-06-21T07:19:09.7257010Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T07:19:09.7258174Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T07:19:09.7258299Z       "requiredStages": [
2026-06-21T07:19:09.7258408Z         "impl",
2026-06-21T07:19:09.7258508Z         "unit"
2026-06-21T07:19:09.7258609Z       ],
2026-06-21T07:19:09.7258714Z       "stages": {
2026-06-21T07:19:09.7258827Z         "doc": {
2026-06-21T07:19:09.7258928Z           "complete": false,
2026-06-21T07:19:09.7259118Z           "evidence": []
2026-06-21T07:19:09.7259224Z         },
2026-06-21T07:19:09.7259328Z         "impl": {
2026-06-21T07:19:09.7259443Z           "complete": true,
2026-06-21T07:19:09.7259548Z           "evidence": [
2026-06-21T07:19:09.7259652Z             {
2026-06-21T07:19:09.7259796Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7259906Z               "line": 275
2026-06-21T07:19:09.7260000Z             }
2026-06-21T07:19:09.7260101Z           ]
2026-06-21T07:19:09.7260212Z         },
2026-06-21T07:19:09.7260314Z         "int": {
2026-06-21T07:19:09.7260428Z           "complete": false,
2026-06-21T07:19:09.7260534Z           "evidence": []
2026-06-21T07:19:09.7260638Z         },
2026-06-21T07:19:09.7260738Z         "unit": {
2026-06-21T07:19:09.7260849Z           "complete": true,
2026-06-21T07:19:09.7260967Z           "evidence": [
2026-06-21T07:19:09.7261067Z             {
2026-06-21T07:19:09.7261215Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7261329Z               "line": 400
2026-06-21T07:19:09.7261430Z             }
2026-06-21T07:19:09.7261535Z           ]
2026-06-21T07:19:09.7261639Z         }
2026-06-21T07:19:09.7261745Z       }
2026-06-21T07:19:09.7261845Z     },
2026-06-21T07:19:09.7261944Z     {
2026-06-21T07:19:09.7262079Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T07:19:09.7263668Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T07:19:09.7263787Z       "requiredStages": [
2026-06-21T07:19:09.7263887Z         "impl",
2026-06-21T07:19:09.7264107Z         "unit"
2026-06-21T07:19:09.7264201Z       ],
2026-06-21T07:19:09.7264307Z       "stages": {
2026-06-21T07:19:09.7264406Z         "doc": {
2026-06-21T07:19:09.7264516Z           "complete": false,
2026-06-21T07:19:09.7264637Z           "evidence": []
2026-06-21T07:19:09.7264831Z         },
2026-06-21T07:19:09.7264942Z         "impl": {
2026-06-21T07:19:09.7265050Z           "complete": true,
2026-06-21T07:19:09.7265160Z           "evidence": [
2026-06-21T07:19:09.7265266Z             {
2026-06-21T07:19:09.7265403Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7265516Z               "line": 654
2026-06-21T07:19:09.7265612Z             }
2026-06-21T07:19:09.7265715Z           ]
2026-06-21T07:19:09.7265814Z         },
2026-06-21T07:19:09.7265925Z         "int": {
2026-06-21T07:19:09.7266044Z           "complete": false,
2026-06-21T07:19:09.7266152Z           "evidence": []
2026-06-21T07:19:09.7266254Z         },
2026-06-21T07:19:09.7266359Z         "unit": {
2026-06-21T07:19:09.7266472Z           "complete": true,
2026-06-21T07:19:09.7266578Z           "evidence": [
2026-06-21T07:19:09.7266683Z             {
2026-06-21T07:19:09.7266831Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7266936Z               "line": 1078
2026-06-21T07:19:09.7267050Z             },
2026-06-21T07:19:09.7267135Z             {
2026-06-21T07:19:09.7267284Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7267388Z               "line": 1092
2026-06-21T07:19:09.7267499Z             }
2026-06-21T07:19:09.7267608Z           ]
2026-06-21T07:19:09.7267708Z         }
2026-06-21T07:19:09.7267814Z       }
2026-06-21T07:19:09.7267909Z     },
2026-06-21T07:19:09.7268007Z     {
2026-06-21T07:19:09.7268126Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T07:19:09.7269855Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T07:19:09.7269983Z       "requiredStages": [],
2026-06-21T07:19:09.7270089Z       "stages": {
2026-06-21T07:19:09.7270198Z         "doc": {
2026-06-21T07:19:09.7270312Z           "complete": false,
2026-06-21T07:19:09.7270409Z           "evidence": []
2026-06-21T07:19:09.7270513Z         },
2026-06-21T07:19:09.7270617Z         "impl": {
2026-06-21T07:19:09.7270733Z           "complete": false,
2026-06-21T07:19:09.7270837Z           "evidence": []
2026-06-21T07:19:09.7270941Z         },
2026-06-21T07:19:09.7271051Z         "int": {
2026-06-21T07:19:09.7271157Z           "complete": false,
2026-06-21T07:19:09.7271270Z           "evidence": []
2026-06-21T07:19:09.7271370Z         },
2026-06-21T07:19:09.7271476Z         "unit": {
2026-06-21T07:19:09.7271579Z           "complete": false,
2026-06-21T07:19:09.7271690Z           "evidence": []
2026-06-21T07:19:09.7271785Z         }
2026-06-21T07:19:09.7271884Z       }
2026-06-21T07:19:09.7271991Z     },
2026-06-21T07:19:09.7272086Z     {
2026-06-21T07:19:09.7272199Z       "id": "REQ-PRES-1",
2026-06-21T07:19:09.7273603Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T07:19:09.7273723Z       "requiredStages": [
2026-06-21T07:19:09.7273827Z         "impl",
2026-06-21T07:19:09.7274038Z         "unit",
2026-06-21T07:19:09.7274142Z         "int"
2026-06-21T07:19:09.7274243Z       ],
2026-06-21T07:19:09.7274352Z       "stages": {
2026-06-21T07:19:09.7274456Z         "doc": {
2026-06-21T07:19:09.7274562Z           "complete": true,
2026-06-21T07:19:09.7274671Z           "evidence": [
2026-06-21T07:19:09.7274887Z             {
2026-06-21T07:19:09.7275015Z               "path": "docs/DEFERRED.md",
2026-06-21T07:19:09.7275119Z               "line": 11
2026-06-21T07:19:09.7275221Z             }
2026-06-21T07:19:09.7275319Z           ]
2026-06-21T07:19:09.7275420Z         },
2026-06-21T07:19:09.7275531Z         "impl": {
2026-06-21T07:19:09.7275638Z           "complete": true,
2026-06-21T07:19:09.7275754Z           "evidence": [
2026-06-21T07:19:09.7275855Z             {
2026-06-21T07:19:09.7276015Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7276129Z               "line": 515
2026-06-21T07:19:09.7276224Z             },
2026-06-21T07:19:09.7276337Z             {
2026-06-21T07:19:09.7276475Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7276585Z               "line": 567
2026-06-21T07:19:09.7276680Z             },
2026-06-21T07:19:09.7279724Z             {
2026-06-21T07:19:09.7279909Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7280024Z               "line": 188
2026-06-21T07:19:09.7280124Z             },
2026-06-21T07:19:09.7280219Z             {
2026-06-21T07:19:09.7280373Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7280482Z               "line": 214
2026-06-21T07:19:09.7280587Z             },
2026-06-21T07:19:09.7280697Z             {
2026-06-21T07:19:09.7280849Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7280955Z               "line": 28
2026-06-21T07:19:09.7281049Z             },
2026-06-21T07:19:09.7281154Z             {
2026-06-21T07:19:09.7281303Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7281416Z               "line": 105
2026-06-21T07:19:09.7281520Z             },
2026-06-21T07:19:09.7281611Z             {
2026-06-21T07:19:09.7281754Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7281863Z               "line": 161
2026-06-21T07:19:09.7281974Z             },
2026-06-21T07:19:09.7282074Z             {
2026-06-21T07:19:09.7282212Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7282326Z               "line": 180
2026-06-21T07:19:09.7282421Z             },
2026-06-21T07:19:09.7282526Z             {
2026-06-21T07:19:09.7282678Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7282783Z               "line": 421
2026-06-21T07:19:09.7282885Z             },
2026-06-21T07:19:09.7282984Z             {
2026-06-21T07:19:09.7283156Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7283290Z               "line": 289
2026-06-21T07:19:09.7283389Z             },
2026-06-21T07:19:09.7283490Z             {
2026-06-21T07:19:09.7283637Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7283751Z               "line": 336
2026-06-21T07:19:09.7283846Z             },
2026-06-21T07:19:09.7283955Z             {
2026-06-21T07:19:09.7284100Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7284212Z               "line": 362
2026-06-21T07:19:09.7284311Z             },
2026-06-21T07:19:09.7284415Z             {
2026-06-21T07:19:09.7284569Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7284673Z               "line": 100
2026-06-21T07:19:09.7284784Z             }
2026-06-21T07:19:09.7284883Z           ]
2026-06-21T07:19:09.7284983Z         },
2026-06-21T07:19:09.7285084Z         "int": {
2026-06-21T07:19:09.7285203Z           "complete": true,
2026-06-21T07:19:09.7285307Z           "evidence": [
2026-06-21T07:19:09.7285408Z             {
2026-06-21T07:19:09.7285565Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7285800Z               "line": 563
2026-06-21T07:19:09.7285908Z             },
2026-06-21T07:19:09.7286009Z             {
2026-06-21T07:19:09.7286162Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7286271Z               "line": 747
2026-06-21T07:19:09.7286585Z             },
2026-06-21T07:19:09.7286694Z             {
2026-06-21T07:19:09.7286836Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7286949Z               "line": 1165
2026-06-21T07:19:09.7287045Z             }
2026-06-21T07:19:09.7287146Z           ]
2026-06-21T07:19:09.7287249Z         },
2026-06-21T07:19:09.7287350Z         "unit": {
2026-06-21T07:19:09.7287465Z           "complete": true,
2026-06-21T07:19:09.7287574Z           "evidence": [
2026-06-21T07:19:09.7287675Z             {
2026-06-21T07:19:09.7287817Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7287926Z               "line": 674
2026-06-21T07:19:09.7288037Z             },
2026-06-21T07:19:09.7288142Z             {
2026-06-21T07:19:09.7288295Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7288404Z               "line": 238
2026-06-21T07:19:09.7288513Z             },
2026-06-21T07:19:09.7288609Z             {
2026-06-21T07:19:09.7288770Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7288876Z               "line": 269
2026-06-21T07:19:09.7289062Z             },
2026-06-21T07:19:09.7289161Z             {
2026-06-21T07:19:09.7289304Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7289421Z               "line": 305
2026-06-21T07:19:09.7289525Z             },
2026-06-21T07:19:09.7289631Z             {
2026-06-21T07:19:09.7289778Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T07:19:09.7289883Z               "line": 336
2026-06-21T07:19:09.7289984Z             },
2026-06-21T07:19:09.7290083Z             {
2026-06-21T07:19:09.7290251Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7290356Z               "line": 1217
2026-06-21T07:19:09.7290455Z             },
2026-06-21T07:19:09.7290561Z             {
2026-06-21T07:19:09.7290708Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7290827Z               "line": 1163
2026-06-21T07:19:09.7290928Z             }
2026-06-21T07:19:09.7291037Z           ]
2026-06-21T07:19:09.7291137Z         }
2026-06-21T07:19:09.7291233Z       }
2026-06-21T07:19:09.7291328Z     },
2026-06-21T07:19:09.7291423Z     {
2026-06-21T07:19:09.7291539Z       "id": "REQ-RC-1",
2026-06-21T07:19:09.7293625Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T07:19:09.7293755Z       "requiredStages": [
2026-06-21T07:19:09.7293864Z         "impl",
2026-06-21T07:19:09.7293968Z         "unit",
2026-06-21T07:19:09.7294070Z         "int"
2026-06-21T07:19:09.7294178Z       ],
2026-06-21T07:19:09.7294277Z       "stages": {
2026-06-21T07:19:09.7294368Z         "doc": {
2026-06-21T07:19:09.7294482Z           "complete": false,
2026-06-21T07:19:09.7294590Z           "evidence": []
2026-06-21T07:19:09.7294690Z         },
2026-06-21T07:19:09.7294795Z         "impl": {
2026-06-21T07:19:09.7294913Z           "complete": true,
2026-06-21T07:19:09.7295019Z           "evidence": [
2026-06-21T07:19:09.7295124Z             {
2026-06-21T07:19:09.7295373Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.7295482Z               "line": 944
2026-06-21T07:19:09.7295581Z             },
2026-06-21T07:19:09.7295682Z             {
2026-06-21T07:19:09.7295835Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7296040Z               "line": 2060
2026-06-21T07:19:09.7296140Z             },
2026-06-21T07:19:09.7296230Z             {
2026-06-21T07:19:09.7296384Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7296483Z               "line": 1017
2026-06-21T07:19:09.7296583Z             },
2026-06-21T07:19:09.7296689Z             {
2026-06-21T07:19:09.7296826Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7296937Z               "line": 1051
2026-06-21T07:19:09.7297032Z             },
2026-06-21T07:19:09.7297135Z             {
2026-06-21T07:19:09.7297259Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7297368Z               "line": 22
2026-06-21T07:19:09.7297466Z             },
2026-06-21T07:19:09.7297552Z             {
2026-06-21T07:19:09.7297682Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7297781Z               "line": 701
2026-06-21T07:19:09.7297886Z             }
2026-06-21T07:19:09.7297991Z           ]
2026-06-21T07:19:09.7298091Z         },
2026-06-21T07:19:09.7298201Z         "int": {
2026-06-21T07:19:09.7298311Z           "complete": true,
2026-06-21T07:19:09.7298420Z           "evidence": [
2026-06-21T07:19:09.7298520Z             {
2026-06-21T07:19:09.7298668Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7298768Z               "line": 258
2026-06-21T07:19:09.7298869Z             },
2026-06-21T07:19:09.7299063Z             {
2026-06-21T07:19:09.7299208Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7299316Z               "line": 285
2026-06-21T07:19:09.7299407Z             },
2026-06-21T07:19:09.7299513Z             {
2026-06-21T07:19:09.7299654Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7299763Z               "line": 413
2026-06-21T07:19:09.7299869Z             }
2026-06-21T07:19:09.7299967Z           ]
2026-06-21T07:19:09.7300071Z         },
2026-06-21T07:19:09.7300172Z         "unit": {
2026-06-21T07:19:09.7300296Z           "complete": true,
2026-06-21T07:19:09.7300395Z           "evidence": [
2026-06-21T07:19:09.7300497Z             {
2026-06-21T07:19:09.7300639Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7300743Z               "line": 1415
2026-06-21T07:19:09.7300844Z             },
2026-06-21T07:19:09.7300944Z             {
2026-06-21T07:19:09.7301073Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7301169Z               "line": 1133
2026-06-21T07:19:09.7301268Z             },
2026-06-21T07:19:09.7301373Z             {
2026-06-21T07:19:09.7301488Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7301602Z               "line": 1162
2026-06-21T07:19:09.7301702Z             },
2026-06-21T07:19:09.7301808Z             {
2026-06-21T07:19:09.7301931Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7302037Z               "line": 1175
2026-06-21T07:19:09.7302137Z             }
2026-06-21T07:19:09.7302241Z           ]
2026-06-21T07:19:09.7302337Z         }
2026-06-21T07:19:09.7302433Z       }
2026-06-21T07:19:09.7302531Z     },
2026-06-21T07:19:09.7302621Z     {
2026-06-21T07:19:09.7302755Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T07:19:09.7308600Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T07:19:09.7309052Z       "requiredStages": [
2026-06-21T07:19:09.7309153Z         "doc",
2026-06-21T07:19:09.7309267Z         "impl",
2026-06-21T07:19:09.7309367Z         "unit"
2026-06-21T07:19:09.7309473Z       ],
2026-06-21T07:19:09.7309576Z       "stages": {
2026-06-21T07:19:09.7309681Z         "doc": {
2026-06-21T07:19:09.7309797Z           "complete": true,
2026-06-21T07:19:09.7309900Z           "evidence": [
2026-06-21T07:19:09.7310006Z             {
2026-06-21T07:19:09.7310126Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7310248Z               "line": 345
2026-06-21T07:19:09.7310352Z             },
2026-06-21T07:19:09.7310448Z             {
2026-06-21T07:19:09.7310593Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.7310698Z               "line": 440
2026-06-21T07:19:09.7310799Z             }
2026-06-21T07:19:09.7310903Z           ]
2026-06-21T07:19:09.7311008Z         },
2026-06-21T07:19:09.7311114Z         "impl": {
2026-06-21T07:19:09.7311227Z           "complete": true,
2026-06-21T07:19:09.7311338Z           "evidence": [
2026-06-21T07:19:09.7311437Z             {
2026-06-21T07:19:09.7311566Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7311672Z               "line": 226
2026-06-21T07:19:09.7311776Z             },
2026-06-21T07:19:09.7311871Z             {
2026-06-21T07:19:09.7312001Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7312114Z               "line": 285
2026-06-21T07:19:09.7312214Z             },
2026-06-21T07:19:09.7312316Z             {
2026-06-21T07:19:09.7312443Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7312549Z               "line": 300
2026-06-21T07:19:09.7312650Z             },
2026-06-21T07:19:09.7312743Z             {
2026-06-21T07:19:09.7312858Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7312969Z               "line": 315
2026-06-21T07:19:09.7313068Z             },
2026-06-21T07:19:09.7313167Z             {
2026-06-21T07:19:09.7313301Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7313411Z               "line": 364
2026-06-21T07:19:09.7313515Z             }
2026-06-21T07:19:09.7313611Z           ]
2026-06-21T07:19:09.7313711Z         },
2026-06-21T07:19:09.7313816Z         "int": {
2026-06-21T07:19:09.7313922Z           "complete": false,
2026-06-21T07:19:09.7314026Z           "evidence": []
2026-06-21T07:19:09.7314130Z         },
2026-06-21T07:19:09.7314241Z         "unit": {
2026-06-21T07:19:09.7314350Z           "complete": true,
2026-06-21T07:19:09.7314454Z           "evidence": [
2026-06-21T07:19:09.7314684Z             {
2026-06-21T07:19:09.7314807Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7314913Z               "line": 1190
2026-06-21T07:19:09.7315017Z             },
2026-06-21T07:19:09.7315122Z             {
2026-06-21T07:19:09.7315247Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7315441Z               "line": 1305
2026-06-21T07:19:09.7315546Z             }
2026-06-21T07:19:09.7315644Z           ]
2026-06-21T07:19:09.7315748Z         }
2026-06-21T07:19:09.7315849Z       }
2026-06-21T07:19:09.7315959Z     },
2026-06-21T07:19:09.7316062Z     {
2026-06-21T07:19:09.7316187Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T07:19:09.7320657Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T07:19:09.7320789Z       "requiredStages": [
2026-06-21T07:19:09.7320893Z         "doc",
2026-06-21T07:19:09.7321003Z         "impl",
2026-06-21T07:19:09.7321106Z         "unit"
2026-06-21T07:19:09.7321206Z       ],
2026-06-21T07:19:09.7321311Z       "stages": {
2026-06-21T07:19:09.7321407Z         "doc": {
2026-06-21T07:19:09.7321516Z           "complete": true,
2026-06-21T07:19:09.7321622Z           "evidence": [
2026-06-21T07:19:09.7321722Z             {
2026-06-21T07:19:09.7321859Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.7321951Z               "line": 461
2026-06-21T07:19:09.7322055Z             }
2026-06-21T07:19:09.7322154Z           ]
2026-06-21T07:19:09.7322256Z         },
2026-06-21T07:19:09.7322360Z         "impl": {
2026-06-21T07:19:09.7322469Z           "complete": true,
2026-06-21T07:19:09.7322585Z           "evidence": [
2026-06-21T07:19:09.7322684Z             {
2026-06-21T07:19:09.7322813Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7322914Z               "line": 421
2026-06-21T07:19:09.7323008Z             },
2026-06-21T07:19:09.7323113Z             {
2026-06-21T07:19:09.7323239Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7323346Z               "line": 437
2026-06-21T07:19:09.7323443Z             }
2026-06-21T07:19:09.7323549Z           ]
2026-06-21T07:19:09.7323633Z         },
2026-06-21T07:19:09.7323742Z         "int": {
2026-06-21T07:19:09.7323852Z           "complete": false,
2026-06-21T07:19:09.7323957Z           "evidence": []
2026-06-21T07:19:09.7324051Z         },
2026-06-21T07:19:09.7324157Z         "unit": {
2026-06-21T07:19:09.7324262Z           "complete": true,
2026-06-21T07:19:09.7324366Z           "evidence": [
2026-06-21T07:19:09.7324477Z             {
2026-06-21T07:19:09.7324605Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7324811Z               "line": 1440
2026-06-21T07:19:09.7324915Z             },
2026-06-21T07:19:09.7325014Z             {
2026-06-21T07:19:09.7325145Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7325248Z               "line": 1459
2026-06-21T07:19:09.7325445Z             },
2026-06-21T07:19:09.7325535Z             {
2026-06-21T07:19:09.7325663Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7325770Z               "line": 1471
2026-06-21T07:19:09.7325863Z             },
2026-06-21T07:19:09.7325962Z             {
2026-06-21T07:19:09.7326087Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7326195Z               "line": 1499
2026-06-21T07:19:09.7326298Z             }
2026-06-21T07:19:09.7326399Z           ]
2026-06-21T07:19:09.7326490Z         }
2026-06-21T07:19:09.7326594Z       }
2026-06-21T07:19:09.7326694Z     },
2026-06-21T07:19:09.7326796Z     {
2026-06-21T07:19:09.7326909Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T07:19:09.7331799Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T07:19:09.7331929Z       "requiredStages": [
2026-06-21T07:19:09.7332028Z         "doc",
2026-06-21T07:19:09.7332128Z         "impl",
2026-06-21T07:19:09.7332229Z         "unit"
2026-06-21T07:19:09.7332333Z       ],
2026-06-21T07:19:09.7332433Z       "stages": {
2026-06-21T07:19:09.7332544Z         "doc": {
2026-06-21T07:19:09.7332653Z           "complete": true,
2026-06-21T07:19:09.7332758Z           "evidence": [
2026-06-21T07:19:09.7332859Z             {
2026-06-21T07:19:09.7332991Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T07:19:09.7333097Z               "line": 447
2026-06-21T07:19:09.7333192Z             }
2026-06-21T07:19:09.7333302Z           ]
2026-06-21T07:19:09.7333402Z         },
2026-06-21T07:19:09.7333507Z         "impl": {
2026-06-21T07:19:09.7333621Z           "complete": true,
2026-06-21T07:19:09.7333727Z           "evidence": [
2026-06-21T07:19:09.7333827Z             {
2026-06-21T07:19:09.7333945Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7334052Z               "line": 395
2026-06-21T07:19:09.7334151Z             },
2026-06-21T07:19:09.7334254Z             {
2026-06-21T07:19:09.7334378Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7334484Z               "line": 411
2026-06-21T07:19:09.7334587Z             },
2026-06-21T07:19:09.7334683Z             {
2026-06-21T07:19:09.7334817Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7335022Z               "line": 454
2026-06-21T07:19:09.7335132Z             },
2026-06-21T07:19:09.7335226Z             {
2026-06-21T07:19:09.7335351Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7335461Z               "line": 468
2026-06-21T07:19:09.7335657Z             },
2026-06-21T07:19:09.7335756Z             {
2026-06-21T07:19:09.7335880Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7335996Z               "line": 479
2026-06-21T07:19:09.7336090Z             }
2026-06-21T07:19:09.7336180Z           ]
2026-06-21T07:19:09.7336281Z         },
2026-06-21T07:19:09.7336377Z         "int": {
2026-06-21T07:19:09.7336480Z           "complete": false,
2026-06-21T07:19:09.7336589Z           "evidence": []
2026-06-21T07:19:09.7336690Z         },
2026-06-21T07:19:09.7336797Z         "unit": {
2026-06-21T07:19:09.7336906Z           "complete": true,
2026-06-21T07:19:09.7337017Z           "evidence": [
2026-06-21T07:19:09.7337121Z             {
2026-06-21T07:19:09.7337245Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7337356Z               "line": 1381
2026-06-21T07:19:09.7337459Z             },
2026-06-21T07:19:09.7337560Z             {
2026-06-21T07:19:09.7337679Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7337798Z               "line": 1402
2026-06-21T07:19:09.7337889Z             },
2026-06-21T07:19:09.7337994Z             {
2026-06-21T07:19:09.7338113Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7338223Z               "line": 1423
2026-06-21T07:19:09.7338327Z             }
2026-06-21T07:19:09.7338428Z           ]
2026-06-21T07:19:09.7338533Z         }
2026-06-21T07:19:09.7338633Z       }
2026-06-21T07:19:09.7338738Z     },
2026-06-21T07:19:09.7338834Z     {
2026-06-21T07:19:09.7339028Z       "id": "REQ-RCVIEW-1",
2026-06-21T07:19:09.7343566Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T07:19:09.7343710Z       "requiredStages": [
2026-06-21T07:19:09.7343824Z         "doc",
2026-06-21T07:19:09.7343928Z         "impl",
2026-06-21T07:19:09.7344034Z         "unit",
2026-06-21T07:19:09.7344138Z         "int"
2026-06-21T07:19:09.7344238Z       ],
2026-06-21T07:19:09.7344344Z       "stages": {
2026-06-21T07:19:09.7344448Z         "doc": {
2026-06-21T07:19:09.7344558Z           "complete": true,
2026-06-21T07:19:09.7344664Z           "evidence": [
2026-06-21T07:19:09.7344763Z             {
2026-06-21T07:19:09.7344881Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7344996Z               "line": 342
2026-06-21T07:19:09.7345210Z             }
2026-06-21T07:19:09.7345311Z           ]
2026-06-21T07:19:09.7345416Z         },
2026-06-21T07:19:09.7345520Z         "impl": {
2026-06-21T07:19:09.7345631Z           "complete": true,
2026-06-21T07:19:09.7345731Z           "evidence": [
2026-06-21T07:19:09.7345839Z             {
2026-06-21T07:19:09.7346083Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T07:19:09.7346187Z               "line": 375
2026-06-21T07:19:09.7346298Z             },
2026-06-21T07:19:09.7346398Z             {
2026-06-21T07:19:09.7346541Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7346650Z               "line": 622
2026-06-21T07:19:09.7346764Z             },
2026-06-21T07:19:09.7346875Z             {
2026-06-21T07:19:09.7347026Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7347144Z               "line": 633
2026-06-21T07:19:09.7347245Z             },
2026-06-21T07:19:09.7347343Z             {
2026-06-21T07:19:09.7347491Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.7347596Z               "line": 41
2026-06-21T07:19:09.7347700Z             },
2026-06-21T07:19:09.7347805Z             {
2026-06-21T07:19:09.7347949Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.7348053Z               "line": 62
2026-06-21T07:19:09.7348154Z             },
2026-06-21T07:19:09.7348254Z             {
2026-06-21T07:19:09.7348406Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7348507Z               "line": 309
2026-06-21T07:19:09.7348612Z             },
2026-06-21T07:19:09.7348711Z             {
2026-06-21T07:19:09.7348841Z               "path": "crates/spt/src/rc.rs",
2026-06-21T07:19:09.7349026Z               "line": 701
2026-06-21T07:19:09.7349118Z             }
2026-06-21T07:19:09.7349207Z           ]
2026-06-21T07:19:09.7349312Z         },
2026-06-21T07:19:09.7349418Z         "int": {
2026-06-21T07:19:09.7349531Z           "complete": true,
2026-06-21T07:19:09.7349636Z           "evidence": [
2026-06-21T07:19:09.7349733Z             {
2026-06-21T07:19:09.7349874Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7349987Z               "line": 913
2026-06-21T07:19:09.7350093Z             },
2026-06-21T07:19:09.7350191Z             {
2026-06-21T07:19:09.7350343Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7350449Z               "line": 953
2026-06-21T07:19:09.7350558Z             },
2026-06-21T07:19:09.7350663Z             {
2026-06-21T07:19:09.7350806Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7350915Z               "line": 1000
2026-06-21T07:19:09.7351016Z             },
2026-06-21T07:19:09.7351116Z             {
2026-06-21T07:19:09.7351254Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7351360Z               "line": 1112
2026-06-21T07:19:09.7351464Z             }
2026-06-21T07:19:09.7351564Z           ]
2026-06-21T07:19:09.7351675Z         },
2026-06-21T07:19:09.7351779Z         "unit": {
2026-06-21T07:19:09.7351903Z           "complete": true,
2026-06-21T07:19:09.7352004Z           "evidence": [
2026-06-21T07:19:09.7352108Z             {
2026-06-21T07:19:09.7352241Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.7352352Z               "line": 175
2026-06-21T07:19:09.7352460Z             },
2026-06-21T07:19:09.7352559Z             {
2026-06-21T07:19:09.7352693Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T07:19:09.7352796Z               "line": 195
2026-06-21T07:19:09.7352900Z             }
2026-06-21T07:19:09.7353006Z           ]
2026-06-21T07:19:09.7353106Z         }
2026-06-21T07:19:09.7353210Z       }
2026-06-21T07:19:09.7353307Z     },
2026-06-21T07:19:09.7353416Z     {
2026-06-21T07:19:09.7353530Z       "id": "REQ-REACH-1",
2026-06-21T07:19:09.7353702Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T07:19:09.7353820Z       "requiredStages": [
2026-06-21T07:19:09.7354036Z         "impl",
2026-06-21T07:19:09.7354135Z         "unit",
2026-06-21T07:19:09.7354242Z         "int"
2026-06-21T07:19:09.7354350Z       ],
2026-06-21T07:19:09.7354455Z       "stages": {
2026-06-21T07:19:09.7354552Z         "doc": {
2026-06-21T07:19:09.7354670Z           "complete": false,
2026-06-21T07:19:09.7354871Z           "evidence": []
2026-06-21T07:19:09.7354975Z         },
2026-06-21T07:19:09.7355075Z         "impl": {
2026-06-21T07:19:09.7355176Z           "complete": true,
2026-06-21T07:19:09.7355281Z           "evidence": [
2026-06-21T07:19:09.7355388Z             {
2026-06-21T07:19:09.7355536Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7355647Z               "line": 622
2026-06-21T07:19:09.7355751Z             },
2026-06-21T07:19:09.7355851Z             {
2026-06-21T07:19:09.7355999Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7356094Z               "line": 76
2026-06-21T07:19:09.7356205Z             },
2026-06-21T07:19:09.7356310Z             {
2026-06-21T07:19:09.7356442Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7356553Z               "line": 222
2026-06-21T07:19:09.7356648Z             },
2026-06-21T07:19:09.7356752Z             {
2026-06-21T07:19:09.7356877Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7356986Z               "line": 422
2026-06-21T07:19:09.7357087Z             },
2026-06-21T07:19:09.7357187Z             {
2026-06-21T07:19:09.7357329Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7357435Z               "line": 529
2026-06-21T07:19:09.7357544Z             },
2026-06-21T07:19:09.7357643Z             {
2026-06-21T07:19:09.7357781Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T07:19:09.7357889Z               "line": 39
2026-06-21T07:19:09.7357993Z             },
2026-06-21T07:19:09.7358089Z             {
2026-06-21T07:19:09.7358218Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7358327Z               "line": 301
2026-06-21T07:19:09.7358423Z             },
2026-06-21T07:19:09.7358524Z             {
2026-06-21T07:19:09.7358651Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T07:19:09.7358753Z               "line": 88
2026-06-21T07:19:09.7358862Z             },
2026-06-21T07:19:09.7359019Z             {
2026-06-21T07:19:09.7359162Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T07:19:09.7359266Z               "line": 98
2026-06-21T07:19:09.7359377Z             },
2026-06-21T07:19:09.7359476Z             {
2026-06-21T07:19:09.7359605Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7359721Z               "line": 233
2026-06-21T07:19:09.7359824Z             }
2026-06-21T07:19:09.7359920Z           ]
2026-06-21T07:19:09.7360007Z         },
2026-06-21T07:19:09.7360106Z         "int": {
2026-06-21T07:19:09.7360216Z           "complete": true,
2026-06-21T07:19:09.7360327Z           "evidence": [
2026-06-21T07:19:09.7360434Z             {
2026-06-21T07:19:09.7360581Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7360696Z               "line": 415
2026-06-21T07:19:09.7360794Z             },
2026-06-21T07:19:09.7360898Z             {
2026-06-21T07:19:09.7361057Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7361161Z               "line": 520
2026-06-21T07:19:09.7361266Z             },
2026-06-21T07:19:09.7361366Z             {
2026-06-21T07:19:09.7361514Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7361620Z               "line": 998
2026-06-21T07:19:09.7361724Z             },
2026-06-21T07:19:09.7361828Z             {
2026-06-21T07:19:09.7361977Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7362091Z               "line": 1383
2026-06-21T07:19:09.7362191Z             }
2026-06-21T07:19:09.7362301Z           ]
2026-06-21T07:19:09.7362401Z         },
2026-06-21T07:19:09.7362607Z         "unit": {
2026-06-21T07:19:09.7362725Z           "complete": true,
2026-06-21T07:19:09.7362821Z           "evidence": [
2026-06-21T07:19:09.7362926Z             {
2026-06-21T07:19:09.7363063Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7363167Z               "line": 639
2026-06-21T07:19:09.7363366Z             },
2026-06-21T07:19:09.7363470Z             {
2026-06-21T07:19:09.7363610Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T07:19:09.7363718Z               "line": 660
2026-06-21T07:19:09.7363828Z             },
2026-06-21T07:19:09.7363924Z             {
2026-06-21T07:19:09.7364070Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T07:19:09.7364172Z               "line": 768
2026-06-21T07:19:09.7364272Z             },
2026-06-21T07:19:09.7364381Z             {
2026-06-21T07:19:09.7364520Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T07:19:09.7364629Z               "line": 93
2026-06-21T07:19:09.7364729Z             },
2026-06-21T07:19:09.7364835Z             {
2026-06-21T07:19:09.7364977Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T07:19:09.7365082Z               "line": 224
2026-06-21T07:19:09.7365187Z             },
2026-06-21T07:19:09.7365277Z             {
2026-06-21T07:19:09.7365422Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T07:19:09.7365530Z               "line": 96
2026-06-21T07:19:09.7365635Z             },
2026-06-21T07:19:09.7365736Z             {
2026-06-21T07:19:09.7365864Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T07:19:09.7365972Z               "line": 146
2026-06-21T07:19:09.7366073Z             },
2026-06-21T07:19:09.7366174Z             {
2026-06-21T07:19:09.7366306Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7366412Z               "line": 698
2026-06-21T07:19:09.7366517Z             },
2026-06-21T07:19:09.7366616Z             {
2026-06-21T07:19:09.7366755Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T07:19:09.7366865Z               "line": 118
2026-06-21T07:19:09.7366969Z             },
2026-06-21T07:19:09.7367065Z             {
2026-06-21T07:19:09.7367203Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T07:19:09.7367313Z               "line": 148
2026-06-21T07:19:09.7367423Z             },
2026-06-21T07:19:09.7367523Z             {
2026-06-21T07:19:09.7367657Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7367771Z               "line": 928
2026-06-21T07:19:09.7367871Z             }
2026-06-21T07:19:09.7367971Z           ]
2026-06-21T07:19:09.7368071Z         }
2026-06-21T07:19:09.7368174Z       }
2026-06-21T07:19:09.7368279Z     },
2026-06-21T07:19:09.7368375Z     {
2026-06-21T07:19:09.7368482Z       "id": "REQ-REACH-2",
2026-06-21T07:19:09.7368663Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T07:19:09.7368773Z       "requiredStages": [],
2026-06-21T07:19:09.7368882Z       "stages": {
2026-06-21T07:19:09.7369054Z         "doc": {
2026-06-21T07:19:09.7369178Z           "complete": false,
2026-06-21T07:19:09.7369274Z           "evidence": []
2026-06-21T07:19:09.7369379Z         },
2026-06-21T07:19:09.7369483Z         "impl": {
2026-06-21T07:19:09.7369589Z           "complete": false,
2026-06-21T07:19:09.7369708Z           "evidence": []
2026-06-21T07:19:09.7369807Z         },
2026-06-21T07:19:09.7369913Z         "int": {
2026-06-21T07:19:09.7370013Z           "complete": false,
2026-06-21T07:19:09.7370117Z           "evidence": []
2026-06-21T07:19:09.7370219Z         },
2026-06-21T07:19:09.7370328Z         "unit": {
2026-06-21T07:19:09.7370432Z           "complete": false,
2026-06-21T07:19:09.7370539Z           "evidence": []
2026-06-21T07:19:09.7370634Z         }
2026-06-21T07:19:09.7370733Z       }
2026-06-21T07:19:09.7370829Z     },
2026-06-21T07:19:09.7370930Z     {
2026-06-21T07:19:09.7371051Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T07:19:09.7374593Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T07:19:09.7374898Z       "requiredStages": [
2026-06-21T07:19:09.7374999Z         "doc",
2026-06-21T07:19:09.7375094Z         "impl",
2026-06-21T07:19:09.7375208Z         "unit",
2026-06-21T07:19:09.7375308Z         "int"
2026-06-21T07:19:09.7375414Z       ],
2026-06-21T07:19:09.7375518Z       "stages": {
2026-06-21T07:19:09.7375628Z         "doc": {
2026-06-21T07:19:09.7375743Z           "complete": true,
2026-06-21T07:19:09.7375852Z           "evidence": [
2026-06-21T07:19:09.7375948Z             {
2026-06-21T07:19:09.7376062Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7376176Z               "line": 372
2026-06-21T07:19:09.7376273Z             }
2026-06-21T07:19:09.7376377Z           ]
2026-06-21T07:19:09.7376481Z         },
2026-06-21T07:19:09.7376599Z         "impl": {
2026-06-21T07:19:09.7376739Z           "complete": true,
2026-06-21T07:19:09.7376880Z           "evidence": [
2026-06-21T07:19:09.7376986Z             {
2026-06-21T07:19:09.7377124Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.7377234Z               "line": 110
2026-06-21T07:19:09.7377335Z             }
2026-06-21T07:19:09.7377439Z           ]
2026-06-21T07:19:09.7377539Z         },
2026-06-21T07:19:09.7377630Z         "int": {
2026-06-21T07:19:09.7377744Z           "complete": true,
2026-06-21T07:19:09.7377848Z           "evidence": [
2026-06-21T07:19:09.7377955Z             {
2026-06-21T07:19:09.7378126Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T07:19:09.7378232Z               "line": 26
2026-06-21T07:19:09.7381240Z             }
2026-06-21T07:19:09.7381384Z           ]
2026-06-21T07:19:09.7381490Z         },
2026-06-21T07:19:09.7381592Z         "unit": {
2026-06-21T07:19:09.7381711Z           "complete": true,
2026-06-21T07:19:09.7381821Z           "evidence": [
2026-06-21T07:19:09.7381928Z             {
2026-06-21T07:19:09.7382086Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T07:19:09.7382192Z               "line": 320
2026-06-21T07:19:09.7382295Z             }
2026-06-21T07:19:09.7382401Z           ]
2026-06-21T07:19:09.7382501Z         }
2026-06-21T07:19:09.7382600Z       }
2026-06-21T07:19:09.7382706Z     },
2026-06-21T07:19:09.7382806Z     {
2026-06-21T07:19:09.7382915Z       "id": "REQ-REL-1",
2026-06-21T07:19:09.7383341Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T07:19:09.7383454Z       "requiredStages": [
2026-06-21T07:19:09.7383559Z         "doc",
2026-06-21T07:19:09.7383665Z         "impl"
2026-06-21T07:19:09.7383765Z       ],
2026-06-21T07:19:09.7383864Z       "stages": {
2026-06-21T07:19:09.7383971Z         "doc": {
2026-06-21T07:19:09.7384089Z           "complete": true,
2026-06-21T07:19:09.7384202Z           "evidence": [
2026-06-21T07:19:09.7384302Z             {
2026-06-21T07:19:09.7384696Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T07:19:09.7384800Z               "line": 3
2026-06-21T07:19:09.7384895Z             }
2026-06-21T07:19:09.7384997Z           ]
2026-06-21T07:19:09.7385096Z         },
2026-06-21T07:19:09.7385312Z         "impl": {
2026-06-21T07:19:09.7385430Z           "complete": true,
2026-06-21T07:19:09.7385544Z           "evidence": [
2026-06-21T07:19:09.7385641Z             {
2026-06-21T07:19:09.7385796Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T07:19:09.7385898Z               "line": 11
2026-06-21T07:19:09.7385997Z             },
2026-06-21T07:19:09.7386097Z             {
2026-06-21T07:19:09.7386232Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7386345Z               "line": 265
2026-06-21T07:19:09.7386436Z             }
2026-06-21T07:19:09.7386532Z           ]
2026-06-21T07:19:09.7386636Z         },
2026-06-21T07:19:09.7386731Z         "int": {
2026-06-21T07:19:09.7386843Z           "complete": false,
2026-06-21T07:19:09.7386942Z           "evidence": []
2026-06-21T07:19:09.7387050Z         },
2026-06-21T07:19:09.7387160Z         "unit": {
2026-06-21T07:19:09.7387265Z           "complete": false,
2026-06-21T07:19:09.7387370Z           "evidence": []
2026-06-21T07:19:09.7387479Z         }
2026-06-21T07:19:09.7387575Z       }
2026-06-21T07:19:09.7387684Z     },
2026-06-21T07:19:09.7387784Z     {
2026-06-21T07:19:09.7387895Z       "id": "REQ-REL-2",
2026-06-21T07:19:09.7388428Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T07:19:09.7388533Z       "requiredStages": [
2026-06-21T07:19:09.7388638Z         "impl",
2026-06-21T07:19:09.7388743Z         "int"
2026-06-21T07:19:09.7388848Z       ],
2026-06-21T07:19:09.7389029Z       "stages": {
2026-06-21T07:19:09.7389135Z         "doc": {
2026-06-21T07:19:09.7389248Z           "complete": true,
2026-06-21T07:19:09.7389366Z           "evidence": [
2026-06-21T07:19:09.7389466Z             {
2026-06-21T07:19:09.7389593Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T07:19:09.7389697Z               "line": 6
2026-06-21T07:19:09.7389803Z             }
2026-06-21T07:19:09.7389903Z           ]
2026-06-21T07:19:09.7390007Z         },
2026-06-21T07:19:09.7390113Z         "impl": {
2026-06-21T07:19:09.7390218Z           "complete": true,
2026-06-21T07:19:09.7390327Z           "evidence": [
2026-06-21T07:19:09.7390428Z             {
2026-06-21T07:19:09.7390575Z               "path": ".github/workflows/release.yml",
2026-06-21T07:19:09.7390680Z               "line": 16
2026-06-21T07:19:09.7390781Z             },
2026-06-21T07:19:09.7390876Z             {
2026-06-21T07:19:09.7391004Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7391100Z               "line": 352
2026-06-21T07:19:09.7391200Z             },
2026-06-21T07:19:09.7391310Z             {
2026-06-21T07:19:09.7391429Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7391534Z               "line": 426
2026-06-21T07:19:09.7391639Z             },
2026-06-21T07:19:09.7391740Z             {
2026-06-21T07:19:09.7391863Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7391968Z               "line": 588
2026-06-21T07:19:09.7392073Z             },
2026-06-21T07:19:09.7392167Z             {
2026-06-21T07:19:09.7392295Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7392404Z               "line": 720
2026-06-21T07:19:09.7392507Z             }
2026-06-21T07:19:09.7392608Z           ]
2026-06-21T07:19:09.7392709Z         },
2026-06-21T07:19:09.7392818Z         "int": {
2026-06-21T07:19:09.7392927Z           "complete": true,
2026-06-21T07:19:09.7393038Z           "evidence": [
2026-06-21T07:19:09.7393137Z             {
2026-06-21T07:19:09.7393295Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T07:19:09.7393508Z               "line": 13
2026-06-21T07:19:09.7393596Z             }
2026-06-21T07:19:09.7393700Z           ]
2026-06-21T07:19:09.7393799Z         },
2026-06-21T07:19:09.7393901Z         "unit": {
2026-06-21T07:19:09.7394015Z           "complete": false,
2026-06-21T07:19:09.7394119Z           "evidence": []
2026-06-21T07:19:09.7394311Z         }
2026-06-21T07:19:09.7394415Z       }
2026-06-21T07:19:09.7394521Z     },
2026-06-21T07:19:09.7394621Z     {
2026-06-21T07:19:09.7394738Z       "id": "REQ-REL-3",
2026-06-21T07:19:09.7395213Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T07:19:09.7395333Z       "requiredStages": [
2026-06-21T07:19:09.7395437Z         "impl",
2026-06-21T07:19:09.7395543Z         "unit"
2026-06-21T07:19:09.7395643Z       ],
2026-06-21T07:19:09.7395746Z       "stages": {
2026-06-21T07:19:09.7395857Z         "doc": {
2026-06-21T07:19:09.7395962Z           "complete": false,
2026-06-21T07:19:09.7396071Z           "evidence": []
2026-06-21T07:19:09.7396172Z         },
2026-06-21T07:19:09.7396266Z         "impl": {
2026-06-21T07:19:09.7396381Z           "complete": true,
2026-06-21T07:19:09.7396487Z           "evidence": [
2026-06-21T07:19:09.7396590Z             {
2026-06-21T07:19:09.7396743Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7396845Z               "line": 237
2026-06-21T07:19:09.7396938Z             },
2026-06-21T07:19:09.7397039Z             {
2026-06-21T07:19:09.7397188Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7397287Z               "line": 289
2026-06-21T07:19:09.7397393Z             },
2026-06-21T07:19:09.7397493Z             {
2026-06-21T07:19:09.7397620Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7397720Z               "line": 329
2026-06-21T07:19:09.7397825Z             },
2026-06-21T07:19:09.7397930Z             {
2026-06-21T07:19:09.7398058Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7398159Z               "line": 353
2026-06-21T07:19:09.7398253Z             },
2026-06-21T07:19:09.7398359Z             {
2026-06-21T07:19:09.7398483Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7398592Z               "line": 394
2026-06-21T07:19:09.7398693Z             }
2026-06-21T07:19:09.7398793Z           ]
2026-06-21T07:19:09.7398897Z         },
2026-06-21T07:19:09.7399056Z         "int": {
2026-06-21T07:19:09.7399174Z           "complete": false,
2026-06-21T07:19:09.7399274Z           "evidence": []
2026-06-21T07:19:09.7399371Z         },
2026-06-21T07:19:09.7399479Z         "unit": {
2026-06-21T07:19:09.7399589Z           "complete": true,
2026-06-21T07:19:09.7399700Z           "evidence": [
2026-06-21T07:19:09.7399803Z             {
2026-06-21T07:19:09.7399945Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7400055Z               "line": 1045
2026-06-21T07:19:09.7400158Z             },
2026-06-21T07:19:09.7400262Z             {
2026-06-21T07:19:09.7400402Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7400515Z               "line": 1104
2026-06-21T07:19:09.7400615Z             }
2026-06-21T07:19:09.7400721Z           ]
2026-06-21T07:19:09.7400825Z         }
2026-06-21T07:19:09.7400921Z       }
2026-06-21T07:19:09.7401026Z     },
2026-06-21T07:19:09.7401125Z     {
2026-06-21T07:19:09.7401245Z       "id": "REQ-RUN-PICKER",
2026-06-21T07:19:09.7406136Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T07:19:09.7406474Z       "requiredStages": [
2026-06-21T07:19:09.7406574Z         "doc",
2026-06-21T07:19:09.7406684Z         "impl",
2026-06-21T07:19:09.7406789Z         "unit"
2026-06-21T07:19:09.7406889Z       ],
2026-06-21T07:19:09.7406998Z       "stages": {
2026-06-21T07:19:09.7407109Z         "doc": {
2026-06-21T07:19:09.7407218Z           "complete": true,
2026-06-21T07:19:09.7407328Z           "evidence": [
2026-06-21T07:19:09.7407428Z             {
2026-06-21T07:19:09.7407551Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7407658Z               "line": 349
2026-06-21T07:19:09.7407762Z             }
2026-06-21T07:19:09.7407862Z           ]
2026-06-21T07:19:09.7407953Z         },
2026-06-21T07:19:09.7408058Z         "impl": {
2026-06-21T07:19:09.7408170Z           "complete": true,
2026-06-21T07:19:09.7408275Z           "evidence": [
2026-06-21T07:19:09.7408376Z             {
2026-06-21T07:19:09.7408508Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7408609Z               "line": 958
2026-06-21T07:19:09.7408695Z             },
2026-06-21T07:19:09.7408786Z             {
2026-06-21T07:19:09.7408909Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7409105Z               "line": 968
2026-06-21T07:19:09.7409209Z             },
2026-06-21T07:19:09.7409321Z             {
2026-06-21T07:19:09.7409491Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7409592Z               "line": 9
2026-06-21T07:19:09.7409696Z             },
2026-06-21T07:19:09.7409786Z             {
2026-06-21T07:19:09.7409926Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T07:19:09.7410034Z               "line": 67
2026-06-21T07:19:09.7410139Z             },
2026-06-21T07:19:09.7410226Z             {
2026-06-21T07:19:09.7410368Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T07:19:09.7410482Z               "line": 16
2026-06-21T07:19:09.7410587Z             },
2026-06-21T07:19:09.7410690Z             {
2026-06-21T07:19:09.7410817Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T07:19:09.7410919Z               "line": 254
2026-06-21T07:19:09.7411028Z             },
2026-06-21T07:19:09.7411127Z             {
2026-06-21T07:19:09.7411272Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7411371Z               "line": 11
2026-06-21T07:19:09.7411476Z             },
2026-06-21T07:19:09.7411577Z             {
2026-06-21T07:19:09.7411719Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7411835Z               "line": 115
2026-06-21T07:19:09.7411939Z             },
2026-06-21T07:19:09.7412034Z             {
2026-06-21T07:19:09.7412178Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7412282Z               "line": 554
2026-06-21T07:19:09.7412382Z             },
2026-06-21T07:19:09.7412488Z             {
2026-06-21T07:19:09.7412625Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7412831Z               "line": 635
2026-06-21T07:19:09.7412935Z             },
2026-06-21T07:19:09.7413035Z             {
2026-06-21T07:19:09.7413175Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7413283Z               "line": 694
2026-06-21T07:19:09.7413482Z             },
2026-06-21T07:19:09.7413585Z             {
2026-06-21T07:19:09.7413714Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7413824Z               "line": 747
2026-06-21T07:19:09.7413924Z             },
2026-06-21T07:19:09.7414028Z             {
2026-06-21T07:19:09.7414167Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7414276Z               "line": 785
2026-06-21T07:19:09.7414382Z             },
2026-06-21T07:19:09.7414482Z             {
2026-06-21T07:19:09.7414629Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7414730Z               "line": 8
2026-06-21T07:19:09.7414835Z             }
2026-06-21T07:19:09.7414934Z           ]
2026-06-21T07:19:09.7415036Z         },
2026-06-21T07:19:09.7415144Z         "int": {
2026-06-21T07:19:09.7415249Z           "complete": false,
2026-06-21T07:19:09.7415365Z           "evidence": []
2026-06-21T07:19:09.7415455Z         },
2026-06-21T07:19:09.7415564Z         "unit": {
2026-06-21T07:19:09.7415680Z           "complete": true,
2026-06-21T07:19:09.7415788Z           "evidence": [
2026-06-21T07:19:09.7415892Z             {
2026-06-21T07:19:09.7416016Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7416129Z               "line": 7638
2026-06-21T07:19:09.7416228Z             },
2026-06-21T07:19:09.7416333Z             {
2026-06-21T07:19:09.7416462Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7416561Z               "line": 7649
2026-06-21T07:19:09.7416658Z             },
2026-06-21T07:19:09.7416753Z             {
2026-06-21T07:19:09.7416891Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7416997Z               "line": 879
2026-06-21T07:19:09.7417101Z             },
2026-06-21T07:19:09.7417205Z             {
2026-06-21T07:19:09.7417330Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7417430Z               "line": 928
2026-06-21T07:19:09.7417530Z             },
2026-06-21T07:19:09.7417631Z             {
2026-06-21T07:19:09.7417764Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7417864Z               "line": 979
2026-06-21T07:19:09.7417970Z             },
2026-06-21T07:19:09.7418068Z             {
2026-06-21T07:19:09.7418208Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7418317Z               "line": 996
2026-06-21T07:19:09.7418417Z             },
2026-06-21T07:19:09.7418513Z             {
2026-06-21T07:19:09.7418656Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7418754Z               "line": 1005
2026-06-21T07:19:09.7418854Z             },
2026-06-21T07:19:09.7419040Z             {
2026-06-21T07:19:09.7419169Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7419279Z               "line": 1016
2026-06-21T07:19:09.7419378Z             },
2026-06-21T07:19:09.7419484Z             {
2026-06-21T07:19:09.7419613Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7419717Z               "line": 1038
2026-06-21T07:19:09.7419818Z             },
2026-06-21T07:19:09.7419923Z             {
2026-06-21T07:19:09.7420060Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7420167Z               "line": 1057
2026-06-21T07:19:09.7420265Z             },
2026-06-21T07:19:09.7420356Z             {
2026-06-21T07:19:09.7420486Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7420594Z               "line": 1107
2026-06-21T07:19:09.7420699Z             },
2026-06-21T07:19:09.7420796Z             {
2026-06-21T07:19:09.7420928Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7421142Z               "line": 1136
2026-06-21T07:19:09.7421250Z             },
2026-06-21T07:19:09.7421349Z             {
2026-06-21T07:19:09.7421493Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7421597Z               "line": 1149
2026-06-21T07:19:09.7421692Z             },
2026-06-21T07:19:09.7421898Z             {
2026-06-21T07:19:09.7422031Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7422137Z               "line": 1215
2026-06-21T07:19:09.7422232Z             },
2026-06-21T07:19:09.7422336Z             {
2026-06-21T07:19:09.7422470Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7422575Z               "line": 1256
2026-06-21T07:19:09.7422685Z             },
2026-06-21T07:19:09.7422785Z             {
2026-06-21T07:19:09.7422913Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7423010Z               "line": 1272
2026-06-21T07:19:09.7423109Z             },
2026-06-21T07:19:09.7423204Z             {
2026-06-21T07:19:09.7423344Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7423457Z               "line": 491
2026-06-21T07:19:09.7423543Z             },
2026-06-21T07:19:09.7423649Z             {
2026-06-21T07:19:09.7423781Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7423881Z               "line": 506
2026-06-21T07:19:09.7423985Z             },
2026-06-21T07:19:09.7424089Z             {
2026-06-21T07:19:09.7424226Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7424336Z               "line": 524
2026-06-21T07:19:09.7424437Z             },
2026-06-21T07:19:09.7424527Z             {
2026-06-21T07:19:09.7424670Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7424775Z               "line": 546
2026-06-21T07:19:09.7424874Z             },
2026-06-21T07:19:09.7424976Z             {
2026-06-21T07:19:09.7425104Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7425213Z               "line": 556
2026-06-21T07:19:09.7425314Z             },
2026-06-21T07:19:09.7425414Z             {
2026-06-21T07:19:09.7425547Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T07:19:09.7425648Z               "line": 582
2026-06-21T07:19:09.7425742Z             }
2026-06-21T07:19:09.7425847Z           ]
2026-06-21T07:19:09.7425953Z         }
2026-06-21T07:19:09.7426052Z       }
2026-06-21T07:19:09.7426143Z     },
2026-06-21T07:19:09.7426235Z     {
2026-06-21T07:19:09.7426353Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T07:19:09.7431212Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T07:19:09.7431456Z       "requiredStages": [
2026-06-21T07:19:09.7431555Z         "doc",
2026-06-21T07:19:09.7431755Z         "impl",
2026-06-21T07:19:09.7431857Z         "unit"
2026-06-21T07:19:09.7431957Z       ],
2026-06-21T07:19:09.7432053Z       "stages": {
2026-06-21T07:19:09.7432153Z         "doc": {
2026-06-21T07:19:09.7432262Z           "complete": true,
2026-06-21T07:19:09.7432373Z           "evidence": [
2026-06-21T07:19:09.7432477Z             {
2026-06-21T07:19:09.7432601Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7432706Z               "line": 390
2026-06-21T07:19:09.7432815Z             }
2026-06-21T07:19:09.7432911Z           ]
2026-06-21T07:19:09.7433012Z         },
2026-06-21T07:19:09.7433116Z         "impl": {
2026-06-21T07:19:09.7433225Z           "complete": true,
2026-06-21T07:19:09.7433341Z           "evidence": [
2026-06-21T07:19:09.7433441Z             {
2026-06-21T07:19:09.7433589Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7433702Z               "line": 39
2026-06-21T07:19:09.7433798Z             },
2026-06-21T07:19:09.7433899Z             {
2026-06-21T07:19:09.7434050Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7434156Z               "line": 79
2026-06-21T07:19:09.7434252Z             },
2026-06-21T07:19:09.7434355Z             {
2026-06-21T07:19:09.7434488Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7434598Z               "line": 162
2026-06-21T07:19:09.7434705Z             }
2026-06-21T07:19:09.7434795Z           ]
2026-06-21T07:19:09.7434901Z         },
2026-06-21T07:19:09.7435006Z         "int": {
2026-06-21T07:19:09.7435134Z           "complete": false,
2026-06-21T07:19:09.7435231Z           "evidence": []
2026-06-21T07:19:09.7435340Z         },
2026-06-21T07:19:09.7435439Z         "unit": {
2026-06-21T07:19:09.7435555Z           "complete": true,
2026-06-21T07:19:09.7435673Z           "evidence": [
2026-06-21T07:19:09.7435773Z             {
2026-06-21T07:19:09.7435921Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7436031Z               "line": 206
2026-06-21T07:19:09.7436136Z             },
2026-06-21T07:19:09.7436246Z             {
2026-06-21T07:19:09.7436389Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7436504Z               "line": 222
2026-06-21T07:19:09.7436603Z             },
2026-06-21T07:19:09.7436708Z             {
2026-06-21T07:19:09.7436852Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7436960Z               "line": 238
2026-06-21T07:19:09.7437069Z             },
2026-06-21T07:19:09.7437169Z             {
2026-06-21T07:19:09.7437320Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7437420Z               "line": 251
2026-06-21T07:19:09.7437535Z             },
2026-06-21T07:19:09.7437634Z             {
2026-06-21T07:19:09.7437783Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T07:19:09.7437902Z               "line": 258
2026-06-21T07:19:09.7438001Z             }
2026-06-21T07:19:09.7438098Z           ]
2026-06-21T07:19:09.7438202Z         }
2026-06-21T07:19:09.7438302Z       }
2026-06-21T07:19:09.7438399Z     },
2026-06-21T07:19:09.7438502Z     {
2026-06-21T07:19:09.7438626Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T07:19:09.7438836Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T07:19:09.7439028Z       "requiredStages": [
2026-06-21T07:19:09.7439127Z         "impl",
2026-06-21T07:19:09.7439232Z         "unit"
2026-06-21T07:19:09.7439333Z       ],
2026-06-21T07:19:09.7439442Z       "stages": {
2026-06-21T07:19:09.7439547Z         "doc": {
2026-06-21T07:19:09.7439662Z           "complete": false,
2026-06-21T07:19:09.7439780Z           "evidence": []
2026-06-21T07:19:09.7439979Z         },
2026-06-21T07:19:09.7440090Z         "impl": {
2026-06-21T07:19:09.7440194Z           "complete": true,
2026-06-21T07:19:09.7440294Z           "evidence": [
2026-06-21T07:19:09.7440400Z             {
2026-06-21T07:19:09.7440541Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7440743Z               "line": 18
2026-06-21T07:19:09.7440847Z             },
2026-06-21T07:19:09.7440948Z             {
2026-06-21T07:19:09.7441085Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7441195Z               "line": 35
2026-06-21T07:19:09.7441301Z             },
2026-06-21T07:19:09.7441405Z             {
2026-06-21T07:19:09.7441534Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7441640Z               "line": 72
2026-06-21T07:19:09.7441743Z             }
2026-06-21T07:19:09.7441849Z           ]
2026-06-21T07:19:09.7441950Z         },
2026-06-21T07:19:09.7442058Z         "int": {
2026-06-21T07:19:09.7442162Z           "complete": false,
2026-06-21T07:19:09.7442272Z           "evidence": []
2026-06-21T07:19:09.7442366Z         },
2026-06-21T07:19:09.7442479Z         "unit": {
2026-06-21T07:19:09.7442589Z           "complete": true,
2026-06-21T07:19:09.7442699Z           "evidence": [
2026-06-21T07:19:09.7442803Z             {
2026-06-21T07:19:09.7442943Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7443056Z               "line": 239
2026-06-21T07:19:09.7443156Z             },
2026-06-21T07:19:09.7443262Z             {
2026-06-21T07:19:09.7443390Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7443496Z               "line": 256
2026-06-21T07:19:09.7443600Z             },
2026-06-21T07:19:09.7443705Z             {
2026-06-21T07:19:09.7443849Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7443952Z               "line": 265
2026-06-21T07:19:09.7444062Z             }
2026-06-21T07:19:09.7444164Z           ]
2026-06-21T07:19:09.7444263Z         }
2026-06-21T07:19:09.7444367Z       }
2026-06-21T07:19:09.7444464Z     },
2026-06-21T07:19:09.7444564Z     {
2026-06-21T07:19:09.7444677Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T07:19:09.7444856Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T07:19:09.7444963Z       "requiredStages": [
2026-06-21T07:19:09.7445072Z         "impl",
2026-06-21T07:19:09.7445182Z         "unit"
2026-06-21T07:19:09.7445280Z       ],
2026-06-21T07:19:09.7445389Z       "stages": {
2026-06-21T07:19:09.7445490Z         "doc": {
2026-06-21T07:19:09.7445609Z           "complete": false,
2026-06-21T07:19:09.7445718Z           "evidence": []
2026-06-21T07:19:09.7445824Z         },
2026-06-21T07:19:09.7445937Z         "impl": {
2026-06-21T07:19:09.7446048Z           "complete": true,
2026-06-21T07:19:09.7446162Z           "evidence": [
2026-06-21T07:19:09.7446257Z             {
2026-06-21T07:19:09.7446406Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7446505Z               "line": 598
2026-06-21T07:19:09.7446615Z             }
2026-06-21T07:19:09.7446721Z           ]
2026-06-21T07:19:09.7446824Z         },
2026-06-21T07:19:09.7446934Z         "int": {
2026-06-21T07:19:09.7447045Z           "complete": false,
2026-06-21T07:19:09.7447158Z           "evidence": []
2026-06-21T07:19:09.7447264Z         },
2026-06-21T07:19:09.7447365Z         "unit": {
2026-06-21T07:19:09.7447473Z           "complete": true,
2026-06-21T07:19:09.7447581Z           "evidence": [
2026-06-21T07:19:09.7447687Z             {
2026-06-21T07:19:09.7447832Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7447932Z               "line": 967
2026-06-21T07:19:09.7448038Z             }
2026-06-21T07:19:09.7448138Z           ]
2026-06-21T07:19:09.7448237Z         }
2026-06-21T07:19:09.7448339Z       }
2026-06-21T07:19:09.7448443Z     },
2026-06-21T07:19:09.7448547Z     {
2026-06-21T07:19:09.7448668Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T07:19:09.7448876Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T07:19:09.7449153Z       "requiredStages": [
2026-06-21T07:19:09.7449249Z         "impl",
2026-06-21T07:19:09.7449339Z         "unit",
2026-06-21T07:19:09.7449449Z         "int"
2026-06-21T07:19:09.7449549Z       ],
2026-06-21T07:19:09.7449654Z       "stages": {
2026-06-21T07:19:09.7449849Z         "doc": {
2026-06-21T07:19:09.7449965Z           "complete": false,
2026-06-21T07:19:09.7450078Z           "evidence": []
2026-06-21T07:19:09.7450179Z         },
2026-06-21T07:19:09.7450284Z         "impl": {
2026-06-21T07:19:09.7450392Z           "complete": true,
2026-06-21T07:19:09.7450496Z           "evidence": [
2026-06-21T07:19:09.7450602Z             {
2026-06-21T07:19:09.7450740Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.7450844Z               "line": 24
2026-06-21T07:19:09.7450951Z             },
2026-06-21T07:19:09.7451054Z             {
2026-06-21T07:19:09.7451189Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7451303Z               "line": 22
2026-06-21T07:19:09.7451407Z             }
2026-06-21T07:19:09.7451518Z           ]
2026-06-21T07:19:09.7451623Z         },
2026-06-21T07:19:09.7451722Z         "int": {
2026-06-21T07:19:09.7451838Z           "complete": true,
2026-06-21T07:19:09.7451946Z           "evidence": [
2026-06-21T07:19:09.7452046Z             {
2026-06-21T07:19:09.7452185Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.7452294Z               "line": 260
2026-06-21T07:19:09.7452399Z             }
2026-06-21T07:19:09.7452500Z           ]
2026-06-21T07:19:09.7452604Z         },
2026-06-21T07:19:09.7452699Z         "unit": {
2026-06-21T07:19:09.7452818Z           "complete": true,
2026-06-21T07:19:09.7452926Z           "evidence": [
2026-06-21T07:19:09.7453034Z             {
2026-06-21T07:19:09.7453174Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.7453283Z               "line": 171
2026-06-21T07:19:09.7453387Z             },
2026-06-21T07:19:09.7453489Z             {
2026-06-21T07:19:09.7453630Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.7453736Z               "line": 200
2026-06-21T07:19:09.7453846Z             },
2026-06-21T07:19:09.7453955Z             {
2026-06-21T07:19:09.7454080Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T07:19:09.7454198Z               "line": 220
2026-06-21T07:19:09.7454298Z             },
2026-06-21T07:19:09.7454404Z             {
2026-06-21T07:19:09.7454547Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7454666Z               "line": 199
2026-06-21T07:19:09.7454767Z             },
2026-06-21T07:19:09.7454860Z             {
2026-06-21T07:19:09.7454990Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7455101Z               "line": 219
2026-06-21T07:19:09.7455209Z             },
2026-06-21T07:19:09.7455310Z             {
2026-06-21T07:19:09.7455462Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7455571Z               "line": 244
2026-06-21T07:19:09.7455666Z             },
2026-06-21T07:19:09.7455765Z             {
2026-06-21T07:19:09.7455902Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7456021Z               "line": 276
2026-06-21T07:19:09.7456127Z             },
2026-06-21T07:19:09.7456231Z             {
2026-06-21T07:19:09.7456366Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7456479Z               "line": 297
2026-06-21T07:19:09.7456588Z             },
2026-06-21T07:19:09.7456680Z             {
2026-06-21T07:19:09.7456822Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T07:19:09.7456918Z               "line": 324
2026-06-21T07:19:09.7457028Z             }
2026-06-21T07:19:09.7457137Z           ]
2026-06-21T07:19:09.7457237Z         }
2026-06-21T07:19:09.7457343Z       }
2026-06-21T07:19:09.7457447Z     },
2026-06-21T07:19:09.7457552Z     {
2026-06-21T07:19:09.7457672Z       "id": "REQ-SEAM-INJECT",
2026-06-21T07:19:09.7457973Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T07:19:09.7458090Z       "requiredStages": [
2026-06-21T07:19:09.7458194Z         "impl",
2026-06-21T07:19:09.7458304Z         "unit"
2026-06-21T07:19:09.7458407Z       ],
2026-06-21T07:19:09.7458593Z       "stages": {
2026-06-21T07:19:09.7458698Z         "doc": {
2026-06-21T07:19:09.7458806Z           "complete": false,
2026-06-21T07:19:09.7458922Z           "evidence": []
2026-06-21T07:19:09.7459098Z         },
2026-06-21T07:19:09.7459204Z         "impl": {
2026-06-21T07:19:09.7459303Z           "complete": true,
2026-06-21T07:19:09.7459427Z           "evidence": [
2026-06-21T07:19:09.7459523Z             {
2026-06-21T07:19:09.7459661Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7459765Z               "line": 19
2026-06-21T07:19:09.7459862Z             },
2026-06-21T07:19:09.7459971Z             {
2026-06-21T07:19:09.7460109Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7460215Z               "line": 111
2026-06-21T07:19:09.7460314Z             }
2026-06-21T07:19:09.7460419Z           ]
2026-06-21T07:19:09.7460525Z         },
2026-06-21T07:19:09.7460633Z         "int": {
2026-06-21T07:19:09.7460749Z           "complete": false,
2026-06-21T07:19:09.7460854Z           "evidence": []
2026-06-21T07:19:09.7460952Z         },
2026-06-21T07:19:09.7461051Z         "unit": {
2026-06-21T07:19:09.7461157Z           "complete": true,
2026-06-21T07:19:09.7461267Z           "evidence": [
2026-06-21T07:19:09.7461366Z             {
2026-06-21T07:19:09.7461506Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7461605Z               "line": 345
2026-06-21T07:19:09.7461715Z             },
2026-06-21T07:19:09.7461811Z             {
2026-06-21T07:19:09.7461948Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7462053Z               "line": 365
2026-06-21T07:19:09.7462149Z             }
2026-06-21T07:19:09.7462254Z           ]
2026-06-21T07:19:09.7462349Z         }
2026-06-21T07:19:09.7462450Z       }
2026-06-21T07:19:09.7462549Z     },
2026-06-21T07:19:09.7462659Z     {
2026-06-21T07:19:09.7462788Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T07:19:09.7462940Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T07:19:09.7463061Z       "requiredStages": [
2026-06-21T07:19:09.7463169Z         "impl",
2026-06-21T07:19:09.7463273Z         "unit"
2026-06-21T07:19:09.7463373Z       ],
2026-06-21T07:19:09.7463477Z       "stages": {
2026-06-21T07:19:09.7463580Z         "doc": {
2026-06-21T07:19:09.7463695Z           "complete": false,
2026-06-21T07:19:09.7463810Z           "evidence": []
2026-06-21T07:19:09.7463909Z         },
2026-06-21T07:19:09.7464010Z         "impl": {
2026-06-21T07:19:09.7464120Z           "complete": true,
2026-06-21T07:19:09.7464228Z           "evidence": [
2026-06-21T07:19:09.7464335Z             {
2026-06-21T07:19:09.7464477Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7464592Z               "line": 18
2026-06-21T07:19:09.7464692Z             },
2026-06-21T07:19:09.7464801Z             {
2026-06-21T07:19:09.7464930Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7465049Z               "line": 431
2026-06-21T07:19:09.7465154Z             }
2026-06-21T07:19:09.7465255Z           ]
2026-06-21T07:19:09.7465350Z         },
2026-06-21T07:19:09.7465455Z         "int": {
2026-06-21T07:19:09.7465570Z           "complete": false,
2026-06-21T07:19:09.7468437Z           "evidence": []
2026-06-21T07:19:09.7468566Z         },
2026-06-21T07:19:09.7468674Z         "unit": {
2026-06-21T07:19:09.7468793Z           "complete": true,
2026-06-21T07:19:09.7468897Z           "evidence": [
2026-06-21T07:19:09.7469071Z             {
2026-06-21T07:19:09.7469226Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7469334Z               "line": 881
2026-06-21T07:19:09.7469454Z             },
2026-06-21T07:19:09.7469705Z             {
2026-06-21T07:19:09.7469859Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7469963Z               "line": 891
2026-06-21T07:19:09.7470059Z             }
2026-06-21T07:19:09.7470164Z           ]
2026-06-21T07:19:09.7470263Z         }
2026-06-21T07:19:09.7470469Z       }
2026-06-21T07:19:09.7470564Z     },
2026-06-21T07:19:09.7470664Z     {
2026-06-21T07:19:09.7470784Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T07:19:09.7470960Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T07:19:09.7471071Z       "requiredStages": [
2026-06-21T07:19:09.7471174Z         "impl",
2026-06-21T07:19:09.7471284Z         "unit",
2026-06-21T07:19:09.7471381Z         "int"
2026-06-21T07:19:09.7471470Z       ],
2026-06-21T07:19:09.7471579Z       "stages": {
2026-06-21T07:19:09.7471679Z         "doc": {
2026-06-21T07:19:09.7471799Z           "complete": false,
2026-06-21T07:19:09.7471907Z           "evidence": []
2026-06-21T07:19:09.7472013Z         },
2026-06-21T07:19:09.7472118Z         "impl": {
2026-06-21T07:19:09.7472232Z           "complete": true,
2026-06-21T07:19:09.7472338Z           "evidence": [
2026-06-21T07:19:09.7472442Z             {
2026-06-21T07:19:09.7472580Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.7472690Z               "line": 19
2026-06-21T07:19:09.7472790Z             },
2026-06-21T07:19:09.7472894Z             {
2026-06-21T07:19:09.7473034Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T07:19:09.7473133Z               "line": 12
2026-06-21T07:19:09.7473234Z             },
2026-06-21T07:19:09.7473339Z             {
2026-06-21T07:19:09.7473472Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7473582Z               "line": 301
2026-06-21T07:19:09.7473696Z             }
2026-06-21T07:19:09.7473800Z           ]
2026-06-21T07:19:09.7473904Z         },
2026-06-21T07:19:09.7474009Z         "int": {
2026-06-21T07:19:09.7474126Z           "complete": true,
2026-06-21T07:19:09.7474236Z           "evidence": [
2026-06-21T07:19:09.7474337Z             {
2026-06-21T07:19:09.7474488Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.7474599Z               "line": 259
2026-06-21T07:19:09.7474699Z             }
2026-06-21T07:19:09.7474788Z           ]
2026-06-21T07:19:09.7474890Z         },
2026-06-21T07:19:09.7474999Z         "unit": {
2026-06-21T07:19:09.7475117Z           "complete": true,
2026-06-21T07:19:09.7475224Z           "evidence": [
2026-06-21T07:19:09.7475323Z             {
2026-06-21T07:19:09.7475471Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.7475577Z               "line": 195
2026-06-21T07:19:09.7475672Z             },
2026-06-21T07:19:09.7475771Z             {
2026-06-21T07:19:09.7475915Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.7476029Z               "line": 202
2026-06-21T07:19:09.7476125Z             },
2026-06-21T07:19:09.7476221Z             {
2026-06-21T07:19:09.7476358Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T07:19:09.7476469Z               "line": 225
2026-06-21T07:19:09.7476573Z             },
2026-06-21T07:19:09.7476671Z             {
2026-06-21T07:19:09.7476806Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T07:19:09.7476913Z               "line": 106
2026-06-21T07:19:09.7477026Z             },
2026-06-21T07:19:09.7477127Z             {
2026-06-21T07:19:09.7477261Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T07:19:09.7477360Z               "line": 137
2026-06-21T07:19:09.7477462Z             },
2026-06-21T07:19:09.7477562Z             {
2026-06-21T07:19:09.7477684Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T07:19:09.7477786Z               "line": 161
2026-06-21T07:19:09.7477886Z             }
2026-06-21T07:19:09.7477985Z           ]
2026-06-21T07:19:09.7478086Z         }
2026-06-21T07:19:09.7478186Z       }
2026-06-21T07:19:09.7478290Z     },
2026-06-21T07:19:09.7478392Z     {
2026-06-21T07:19:09.7478591Z       "id": "REQ-SEAM-RESUME",
2026-06-21T07:19:09.7478802Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T07:19:09.7478915Z       "requiredStages": [
2026-06-21T07:19:09.7479102Z         "impl",
2026-06-21T07:19:09.7479200Z         "unit"
2026-06-21T07:19:09.7479438Z       ],
2026-06-21T07:19:09.7479546Z       "stages": {
2026-06-21T07:19:09.7479641Z         "doc": {
2026-06-21T07:19:09.7479751Z           "complete": false,
2026-06-21T07:19:09.7479856Z           "evidence": []
2026-06-21T07:19:09.7479961Z         },
2026-06-21T07:19:09.7480066Z         "impl": {
2026-06-21T07:19:09.7480184Z           "complete": true,
2026-06-21T07:19:09.7480285Z           "evidence": [
2026-06-21T07:19:09.7480386Z             {
2026-06-21T07:19:09.7480518Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.7480615Z               "line": 19
2026-06-21T07:19:09.7480719Z             }
2026-06-21T07:19:09.7480819Z           ]
2026-06-21T07:19:09.7480919Z         },
2026-06-21T07:19:09.7481020Z         "int": {
2026-06-21T07:19:09.7481139Z           "complete": false,
2026-06-21T07:19:09.7481244Z           "evidence": []
2026-06-21T07:19:09.7481349Z         },
2026-06-21T07:19:09.7481444Z         "unit": {
2026-06-21T07:19:09.7481569Z           "complete": true,
2026-06-21T07:19:09.7481669Z           "evidence": [
2026-06-21T07:19:09.7481768Z             {
2026-06-21T07:19:09.7481912Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.7482012Z               "line": 201
2026-06-21T07:19:09.7482110Z             },
2026-06-21T07:19:09.7482211Z             {
2026-06-21T07:19:09.7482345Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.7482453Z               "line": 223
2026-06-21T07:19:09.7482554Z             },
2026-06-21T07:19:09.7482659Z             {
2026-06-21T07:19:09.7482797Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T07:19:09.7482898Z               "line": 244
2026-06-21T07:19:09.7483008Z             }
2026-06-21T07:19:09.7483107Z           ]
2026-06-21T07:19:09.7483208Z         }
2026-06-21T07:19:09.7483307Z       }
2026-06-21T07:19:09.7483412Z     },
2026-06-21T07:19:09.7483508Z     {
2026-06-21T07:19:09.7483636Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T07:19:09.7483755Z       "title": "spawn-session seam",
2026-06-21T07:19:09.7483871Z       "requiredStages": [
2026-06-21T07:19:09.7483979Z         "impl",
2026-06-21T07:19:09.7484080Z         "unit"
2026-06-21T07:19:09.7484186Z       ],
2026-06-21T07:19:09.7484294Z       "stages": {
2026-06-21T07:19:09.7484393Z         "doc": {
2026-06-21T07:19:09.7484508Z           "complete": false,
2026-06-21T07:19:09.7484606Z           "evidence": []
2026-06-21T07:19:09.7484705Z         },
2026-06-21T07:19:09.7484811Z         "impl": {
2026-06-21T07:19:09.7484916Z           "complete": true,
2026-06-21T07:19:09.7485025Z           "evidence": [
2026-06-21T07:19:09.7485130Z             {
2026-06-21T07:19:09.7485278Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7485387Z               "line": 20
2026-06-21T07:19:09.7485498Z             }
2026-06-21T07:19:09.7485588Z           ]
2026-06-21T07:19:09.7485692Z         },
2026-06-21T07:19:09.7485794Z         "int": {
2026-06-21T07:19:09.7485903Z           "complete": false,
2026-06-21T07:19:09.7486002Z           "evidence": []
2026-06-21T07:19:09.7486108Z         },
2026-06-21T07:19:09.7486213Z         "unit": {
2026-06-21T07:19:09.7486326Z           "complete": true,
2026-06-21T07:19:09.7486437Z           "evidence": [
2026-06-21T07:19:09.7486541Z             {
2026-06-21T07:19:09.7486681Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7486790Z               "line": 608
2026-06-21T07:19:09.7486894Z             },
2026-06-21T07:19:09.7486995Z             {
2026-06-21T07:19:09.7487133Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7487232Z               "line": 615
2026-06-21T07:19:09.7487336Z             },
2026-06-21T07:19:09.7487540Z             {
2026-06-21T07:19:09.7487673Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7487788Z               "line": 721
2026-06-21T07:19:09.7487887Z             },
2026-06-21T07:19:09.7487988Z             {
2026-06-21T07:19:09.7488131Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7488303Z               "line": 727
2026-06-21T07:19:09.7488403Z             },
2026-06-21T07:19:09.7488502Z             {
2026-06-21T07:19:09.7488637Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7488741Z               "line": 752
2026-06-21T07:19:09.7488846Z             },
2026-06-21T07:19:09.7489037Z             {
2026-06-21T07:19:09.7489175Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T07:19:09.7489277Z               "line": 789
2026-06-21T07:19:09.7489394Z             }
2026-06-21T07:19:09.7489494Z           ]
2026-06-21T07:19:09.7489591Z         }
2026-06-21T07:19:09.7489691Z       }
2026-06-21T07:19:09.7489798Z     },
2026-06-21T07:19:09.7489894Z     {
2026-06-21T07:19:09.7490012Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T07:19:09.7490206Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T07:19:09.7490312Z       "requiredStages": [
2026-06-21T07:19:09.7490421Z         "impl",
2026-06-21T07:19:09.7490525Z         "unit"
2026-06-21T07:19:09.7490627Z       ],
2026-06-21T07:19:09.7490731Z       "stages": {
2026-06-21T07:19:09.7490835Z         "doc": {
2026-06-21T07:19:09.7490951Z           "complete": false,
2026-06-21T07:19:09.7491055Z           "evidence": []
2026-06-21T07:19:09.7491150Z         },
2026-06-21T07:19:09.7491256Z         "impl": {
2026-06-21T07:19:09.7491366Z           "complete": true,
2026-06-21T07:19:09.7491470Z           "evidence": [
2026-06-21T07:19:09.7491566Z             {
2026-06-21T07:19:09.7491732Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7491838Z               "line": 28
2026-06-21T07:19:09.7491942Z             },
2026-06-21T07:19:09.7492051Z             {
2026-06-21T07:19:09.7492201Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7492308Z               "line": 88
2026-06-21T07:19:09.7492415Z             }
2026-06-21T07:19:09.7492515Z           ]
2026-06-21T07:19:09.7492618Z         },
2026-06-21T07:19:09.7492723Z         "int": {
2026-06-21T07:19:09.7492833Z           "complete": false,
2026-06-21T07:19:09.7492938Z           "evidence": []
2026-06-21T07:19:09.7493037Z         },
2026-06-21T07:19:09.7493143Z         "unit": {
2026-06-21T07:19:09.7493253Z           "complete": true,
2026-06-21T07:19:09.7493357Z           "evidence": [
2026-06-21T07:19:09.7493463Z             {
2026-06-21T07:19:09.7493614Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7493729Z               "line": 326
2026-06-21T07:19:09.7493825Z             },
2026-06-21T07:19:09.7493929Z             {
2026-06-21T07:19:09.7494088Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7494196Z               "line": 337
2026-06-21T07:19:09.7494301Z             }
2026-06-21T07:19:09.7494402Z           ]
2026-06-21T07:19:09.7494501Z         }
2026-06-21T07:19:09.7494596Z       }
2026-06-21T07:19:09.7494693Z     },
2026-06-21T07:19:09.7494802Z     {
2026-06-21T07:19:09.7494901Z       "id": "REQ-SEC-1",
2026-06-21T07:19:09.7495333Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T07:19:09.7495443Z       "requiredStages": [
2026-06-21T07:19:09.7495542Z         "impl",
2026-06-21T07:19:09.7495647Z         "unit"
2026-06-21T07:19:09.7495743Z       ],
2026-06-21T07:19:09.7495852Z       "stages": {
2026-06-21T07:19:09.7495947Z         "doc": {
2026-06-21T07:19:09.7496058Z           "complete": false,
2026-06-21T07:19:09.7496166Z           "evidence": []
2026-06-21T07:19:09.7496272Z         },
2026-06-21T07:19:09.7496491Z         "impl": {
2026-06-21T07:19:09.7496606Z           "complete": true,
2026-06-21T07:19:09.7496720Z           "evidence": [
2026-06-21T07:19:09.7496820Z             {
2026-06-21T07:19:09.7496974Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7497078Z               "line": 86
2026-06-21T07:19:09.7497274Z             },
2026-06-21T07:19:09.7497364Z             {
2026-06-21T07:19:09.7497507Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7497613Z               "line": 116
2026-06-21T07:19:09.7497716Z             },
2026-06-21T07:19:09.7497815Z             {
2026-06-21T07:19:09.7497954Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7498066Z               "line": 130
2026-06-21T07:19:09.7498161Z             },
2026-06-21T07:19:09.7498262Z             {
2026-06-21T07:19:09.7498405Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7498509Z               "line": 109
2026-06-21T07:19:09.7498610Z             },
2026-06-21T07:19:09.7498705Z             {
2026-06-21T07:19:09.7498844Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7499034Z               "line": 130
2026-06-21T07:19:09.7499129Z             },
2026-06-21T07:19:09.7499235Z             {
2026-06-21T07:19:09.7499373Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7499492Z               "line": 143
2026-06-21T07:19:09.7499593Z             },
2026-06-21T07:19:09.7499697Z             {
2026-06-21T07:19:09.7499832Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7499931Z               "line": 209
2026-06-21T07:19:09.7500031Z             },
2026-06-21T07:19:09.7500127Z             {
2026-06-21T07:19:09.7500260Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7500368Z               "line": 235
2026-06-21T07:19:09.7500473Z             },
2026-06-21T07:19:09.7500577Z             {
2026-06-21T07:19:09.7500699Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7500810Z               "line": 5295
2026-06-21T07:19:09.7500911Z             }
2026-06-21T07:19:09.7501009Z           ]
2026-06-21T07:19:09.7501100Z         },
2026-06-21T07:19:09.7501201Z         "int": {
2026-06-21T07:19:09.7501310Z           "complete": false,
2026-06-21T07:19:09.7501425Z           "evidence": []
2026-06-21T07:19:09.7501525Z         },
2026-06-21T07:19:09.7501625Z         "unit": {
2026-06-21T07:19:09.7501740Z           "complete": true,
2026-06-21T07:19:09.7501840Z           "evidence": [
2026-06-21T07:19:09.7501944Z             {
2026-06-21T07:19:09.7502083Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7502197Z               "line": 142
2026-06-21T07:19:09.7502301Z             },
2026-06-21T07:19:09.7502398Z             {
2026-06-21T07:19:09.7502544Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7502650Z               "line": 194
2026-06-21T07:19:09.7502751Z             },
2026-06-21T07:19:09.7502855Z             {
2026-06-21T07:19:09.7502994Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T07:19:09.7503099Z               "line": 235
2026-06-21T07:19:09.7503197Z             },
2026-06-21T07:19:09.7503302Z             {
2026-06-21T07:19:09.7503446Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T07:19:09.7503554Z               "line": 140
2026-06-21T07:19:09.7503655Z             },
2026-06-21T07:19:09.7503742Z             {
2026-06-21T07:19:09.7503883Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7503989Z               "line": 247
2026-06-21T07:19:09.7504089Z             },
2026-06-21T07:19:09.7504189Z             {
2026-06-21T07:19:09.7504328Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7504427Z               "line": 277
2026-06-21T07:19:09.7504527Z             },
2026-06-21T07:19:09.7504624Z             {
2026-06-21T07:19:09.7504761Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7504977Z               "line": 310
2026-06-21T07:19:09.7505076Z             },
2026-06-21T07:19:09.7505180Z             {
2026-06-21T07:19:09.7505306Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7505409Z               "line": 329
2026-06-21T07:19:09.7505599Z             },
2026-06-21T07:19:09.7505699Z             {
2026-06-21T07:19:09.7505840Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7505945Z               "line": 362
2026-06-21T07:19:09.7506055Z             },
2026-06-21T07:19:09.7506155Z             {
2026-06-21T07:19:09.7506289Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T07:19:09.7506389Z               "line": 386
2026-06-21T07:19:09.7506493Z             },
2026-06-21T07:19:09.7506599Z             {
2026-06-21T07:19:09.7506727Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7506837Z               "line": 8296
2026-06-21T07:19:09.7506942Z             }
2026-06-21T07:19:09.7507033Z           ]
2026-06-21T07:19:09.7507137Z         }
2026-06-21T07:19:09.7507234Z       }
2026-06-21T07:19:09.7507333Z     },
2026-06-21T07:19:09.7507433Z     {
2026-06-21T07:19:09.7507558Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T07:19:09.7511423Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T07:19:09.7511574Z       "requiredStages": [
2026-06-21T07:19:09.7511670Z         "impl",
2026-06-21T07:19:09.7511775Z         "unit",
2026-06-21T07:19:09.7511870Z         "int"
2026-06-21T07:19:09.7511975Z       ],
2026-06-21T07:19:09.7512080Z       "stages": {
2026-06-21T07:19:09.7512185Z         "doc": {
2026-06-21T07:19:09.7512305Z           "complete": false,
2026-06-21T07:19:09.7512409Z           "evidence": []
2026-06-21T07:19:09.7512514Z         },
2026-06-21T07:19:09.7512629Z         "impl": {
2026-06-21T07:19:09.7512748Z           "complete": true,
2026-06-21T07:19:09.7512857Z           "evidence": [
2026-06-21T07:19:09.7512954Z             {
2026-06-21T07:19:09.7513095Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.7513205Z               "line": 1066
2026-06-21T07:19:09.7513306Z             },
2026-06-21T07:19:09.7513410Z             {
2026-06-21T07:19:09.7513559Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7513669Z               "line": 1857
2026-06-21T07:19:09.7513772Z             },
2026-06-21T07:19:09.7513876Z             {
2026-06-21T07:19:09.7514006Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7514119Z               "line": 2850
2026-06-21T07:19:09.7514220Z             }
2026-06-21T07:19:09.7514325Z           ]
2026-06-21T07:19:09.7514425Z         },
2026-06-21T07:19:09.7514525Z         "int": {
2026-06-21T07:19:09.7514626Z           "complete": true,
2026-06-21T07:19:09.7514730Z           "evidence": [
2026-06-21T07:19:09.7514945Z             {
2026-06-21T07:19:09.7515101Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.7515208Z               "line": 189
2026-06-21T07:19:09.7515312Z             },
2026-06-21T07:19:09.7515411Z             {
2026-06-21T07:19:09.7515650Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T07:19:09.7515760Z               "line": 524
2026-06-21T07:19:09.7515866Z             }
2026-06-21T07:19:09.7515974Z           ]
2026-06-21T07:19:09.7516074Z         },
2026-06-21T07:19:09.7516183Z         "unit": {
2026-06-21T07:19:09.7516296Z           "complete": true,
2026-06-21T07:19:09.7516405Z           "evidence": [
2026-06-21T07:19:09.7516501Z             {
2026-06-21T07:19:09.7516639Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T07:19:09.7516743Z               "line": 952
2026-06-21T07:19:09.7516845Z             },
2026-06-21T07:19:09.7516954Z             {
2026-06-21T07:19:09.7517087Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7517202Z               "line": 7486
2026-06-21T07:19:09.7517301Z             }
2026-06-21T07:19:09.7517407Z           ]
2026-06-21T07:19:09.7517512Z         }
2026-06-21T07:19:09.7517616Z       }
2026-06-21T07:19:09.7517721Z     },
2026-06-21T07:19:09.7517818Z     {
2026-06-21T07:19:09.7517959Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T07:19:09.7525027Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T07:19:09.7525172Z       "requiredStages": [
2026-06-21T07:19:09.7525272Z         "doc",
2026-06-21T07:19:09.7525376Z         "impl",
2026-06-21T07:19:09.7525477Z         "unit",
2026-06-21T07:19:09.7525581Z         "int"
2026-06-21T07:19:09.7525681Z       ],
2026-06-21T07:19:09.7525787Z       "stages": {
2026-06-21T07:19:09.7525895Z         "doc": {
2026-06-21T07:19:09.7526116Z           "complete": true,
2026-06-21T07:19:09.7526234Z           "evidence": [
2026-06-21T07:19:09.7526320Z             {
2026-06-21T07:19:09.7526501Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T07:19:09.7526605Z               "line": 130
2026-06-21T07:19:09.7526710Z             },
2026-06-21T07:19:09.7526927Z             {
2026-06-21T07:19:09.7527056Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.7527162Z               "line": 96
2026-06-21T07:19:09.7527251Z             }
2026-06-21T07:19:09.7527361Z           ]
2026-06-21T07:19:09.7527461Z         },
2026-06-21T07:19:09.7527570Z         "impl": {
2026-06-21T07:19:09.7527676Z           "complete": true,
2026-06-21T07:19:09.7527781Z           "evidence": [
2026-06-21T07:19:09.7527885Z             {
2026-06-21T07:19:09.7528044Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.7528153Z               "line": 77
2026-06-21T07:19:09.7528253Z             },
2026-06-21T07:19:09.7528358Z             {
2026-06-21T07:19:09.7528510Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.7528621Z               "line": 183
2026-06-21T07:19:09.7528725Z             },
2026-06-21T07:19:09.7528830Z             {
2026-06-21T07:19:09.7529068Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7529182Z               "line": 222
2026-06-21T07:19:09.7529284Z             },
2026-06-21T07:19:09.7529383Z             {
2026-06-21T07:19:09.7529543Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7529658Z               "line": 71
2026-06-21T07:19:09.7529761Z             },
2026-06-21T07:19:09.7529860Z             {
2026-06-21T07:19:09.7530000Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7530108Z               "line": 176
2026-06-21T07:19:09.7530209Z             }
2026-06-21T07:19:09.7530310Z           ]
2026-06-21T07:19:09.7530418Z         },
2026-06-21T07:19:09.7530519Z         "int": {
2026-06-21T07:19:09.7530643Z           "complete": true,
2026-06-21T07:19:09.7530747Z           "evidence": [
2026-06-21T07:19:09.7530848Z             {
2026-06-21T07:19:09.7531015Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T07:19:09.7531125Z               "line": 25
2026-06-21T07:19:09.7531231Z             }
2026-06-21T07:19:09.7531329Z           ]
2026-06-21T07:19:09.7531430Z         },
2026-06-21T07:19:09.7531536Z         "unit": {
2026-06-21T07:19:09.7531653Z           "complete": true,
2026-06-21T07:19:09.7531759Z           "evidence": [
2026-06-21T07:19:09.7531860Z             {
2026-06-21T07:19:09.7532011Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.7532115Z               "line": 341
2026-06-21T07:19:09.7532220Z             },
2026-06-21T07:19:09.7532323Z             {
2026-06-21T07:19:09.7532475Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T07:19:09.7532586Z               "line": 391
2026-06-21T07:19:09.7532685Z             },
2026-06-21T07:19:09.7532790Z             {
2026-06-21T07:19:09.7532934Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7533042Z               "line": 1244
2026-06-21T07:19:09.7533153Z             },
2026-06-21T07:19:09.7533258Z             {
2026-06-21T07:19:09.7533406Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7533510Z               "line": 184
2026-06-21T07:19:09.7533615Z             },
2026-06-21T07:19:09.7533715Z             {
2026-06-21T07:19:09.7533863Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7533968Z               "line": 208
2026-06-21T07:19:09.7534069Z             },
2026-06-21T07:19:09.7534177Z             {
2026-06-21T07:19:09.7534316Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7534427Z               "line": 236
2026-06-21T07:19:09.7534530Z             },
2026-06-21T07:19:09.7534636Z             {
2026-06-21T07:19:09.7534779Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T07:19:09.7534992Z               "line": 945
2026-06-21T07:19:09.7535098Z             }
2026-06-21T07:19:09.7535197Z           ]
2026-06-21T07:19:09.7535302Z         }
2026-06-21T07:19:09.7535403Z       }
2026-06-21T07:19:09.7535503Z     },
2026-06-21T07:19:09.7535699Z     {
2026-06-21T07:19:09.7535808Z       "id": "REQ-SHELL-1",
2026-06-21T07:19:09.7536761Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T07:19:09.7536866Z       "requiredStages": [
2026-06-21T07:19:09.7536977Z         "impl",
2026-06-21T07:19:09.7537080Z         "unit",
2026-06-21T07:19:09.7537180Z         "int"
2026-06-21T07:19:09.7537280Z       ],
2026-06-21T07:19:09.7537379Z       "stages": {
2026-06-21T07:19:09.7537477Z         "doc": {
2026-06-21T07:19:09.7537588Z           "complete": false,
2026-06-21T07:19:09.7537698Z           "evidence": []
2026-06-21T07:19:09.7537801Z         },
2026-06-21T07:19:09.7537902Z         "impl": {
2026-06-21T07:19:09.7538012Z           "complete": true,
2026-06-21T07:19:09.7538116Z           "evidence": [
2026-06-21T07:19:09.7538222Z             {
2026-06-21T07:19:09.7538365Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7538474Z               "line": 189
2026-06-21T07:19:09.7538580Z             },
2026-06-21T07:19:09.7538675Z             {
2026-06-21T07:19:09.7538823Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7538923Z               "line": 268
2026-06-21T07:19:09.7539118Z             },
2026-06-21T07:19:09.7539214Z             {
2026-06-21T07:19:09.7539371Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7539481Z               "line": 27
2026-06-21T07:19:09.7539586Z             },
2026-06-21T07:19:09.7539695Z             {
2026-06-21T07:19:09.7539839Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7539953Z               "line": 52
2026-06-21T07:19:09.7540052Z             },
2026-06-21T07:19:09.7540152Z             {
2026-06-21T07:19:09.7540293Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7540402Z               "line": 144
2026-06-21T07:19:09.7540502Z             },
2026-06-21T07:19:09.7540603Z             {
2026-06-21T07:19:09.7540745Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7540856Z               "line": 176
2026-06-21T07:19:09.7540960Z             },
2026-06-21T07:19:09.7541069Z             {
2026-06-21T07:19:09.7541199Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7541312Z               "line": 22
2026-06-21T07:19:09.7541413Z             },
2026-06-21T07:19:09.7541509Z             {
2026-06-21T07:19:09.7541656Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7541757Z               "line": 65
2026-06-21T07:19:09.7541866Z             },
2026-06-21T07:19:09.7541961Z             {
2026-06-21T07:19:09.7542105Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7542209Z               "line": 76
2026-06-21T07:19:09.7542319Z             },
2026-06-21T07:19:09.7542416Z             {
2026-06-21T07:19:09.7542566Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7542670Z               "line": 151
2026-06-21T07:19:09.7542766Z             },
2026-06-21T07:19:09.7542869Z             {
2026-06-21T07:19:09.7543002Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7543108Z               "line": 210
2026-06-21T07:19:09.7543212Z             },
2026-06-21T07:19:09.7543317Z             {
2026-06-21T07:19:09.7543465Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7543574Z               "line": 259
2026-06-21T07:19:09.7543775Z             },
2026-06-21T07:19:09.7543879Z             {
2026-06-21T07:19:09.7544038Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7544142Z               "line": 281
2026-06-21T07:19:09.7544247Z             },
2026-06-21T07:19:09.7544437Z             {
2026-06-21T07:19:09.7544590Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7544696Z               "line": 294
2026-06-21T07:19:09.7544800Z             },
2026-06-21T07:19:09.7544900Z             {
2026-06-21T07:19:09.7545052Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.7545162Z               "line": 217
2026-06-21T07:19:09.7545263Z             },
2026-06-21T07:19:09.7545363Z             {
2026-06-21T07:19:09.7545509Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.7545615Z               "line": 233
2026-06-21T07:19:09.7545720Z             },
2026-06-21T07:19:09.7545814Z             {
2026-06-21T07:19:09.7545963Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.7546067Z               "line": 41
2026-06-21T07:19:09.7546171Z             },
2026-06-21T07:19:09.7546273Z             {
2026-06-21T07:19:09.7546424Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.7546539Z               "line": 222
2026-06-21T07:19:09.7546644Z             },
2026-06-21T07:19:09.7546753Z             {
2026-06-21T07:19:09.7546893Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T07:19:09.7547002Z               "line": 173
2026-06-21T07:19:09.7547107Z             },
2026-06-21T07:19:09.7547203Z             {
2026-06-21T07:19:09.7547340Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7547445Z               "line": 354
2026-06-21T07:19:09.7547547Z             },
2026-06-21T07:19:09.7547655Z             {
2026-06-21T07:19:09.7547782Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7547887Z               "line": 419
2026-06-21T07:19:09.7547981Z             },
2026-06-21T07:19:09.7548090Z             {
2026-06-21T07:19:09.7548244Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7548353Z               "line": 333
2026-06-21T07:19:09.7548452Z             },
2026-06-21T07:19:09.7548554Z             {
2026-06-21T07:19:09.7548681Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7548792Z               "line": 6320
2026-06-21T07:19:09.7548897Z             },
2026-06-21T07:19:09.7549073Z             {
2026-06-21T07:19:09.7549197Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7549306Z               "line": 6470
2026-06-21T07:19:09.7549406Z             },
2026-06-21T07:19:09.7549512Z             {
2026-06-21T07:19:09.7549635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7549736Z               "line": 6646
2026-06-21T07:19:09.7549836Z             }
2026-06-21T07:19:09.7549926Z           ]
2026-06-21T07:19:09.7550032Z         },
2026-06-21T07:19:09.7550127Z         "int": {
2026-06-21T07:19:09.7550245Z           "complete": true,
2026-06-21T07:19:09.7550356Z           "evidence": [
2026-06-21T07:19:09.7550457Z             {
2026-06-21T07:19:09.7550612Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7550731Z               "line": 713
2026-06-21T07:19:09.7550839Z             },
2026-06-21T07:19:09.7550938Z             {
2026-06-21T07:19:09.7551092Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T07:19:09.7551201Z               "line": 8
2026-06-21T07:19:09.7551305Z             },
2026-06-21T07:19:09.7551411Z             {
2026-06-21T07:19:09.7551562Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T07:19:09.7551674Z               "line": 49
2026-06-21T07:19:09.7551778Z             },
2026-06-21T07:19:09.7551873Z             {
2026-06-21T07:19:09.7552021Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7552130Z               "line": 778
2026-06-21T07:19:09.7552336Z             },
2026-06-21T07:19:09.7552440Z             {
2026-06-21T07:19:09.7552593Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7552704Z               "line": 1213
2026-06-21T07:19:09.7552807Z             },
2026-06-21T07:19:09.7553000Z             {
2026-06-21T07:19:09.7553140Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T07:19:09.7553245Z               "line": 17
2026-06-21T07:19:09.7553345Z             },
2026-06-21T07:19:09.7553452Z             {
2026-06-21T07:19:09.7553582Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T07:19:09.7553692Z               "line": 14
2026-06-21T07:19:09.7553791Z             }
2026-06-21T07:19:09.7553896Z           ]
2026-06-21T07:19:09.7554001Z         },
2026-06-21T07:19:09.7554105Z         "unit": {
2026-06-21T07:19:09.7554226Z           "complete": true,
2026-06-21T07:19:09.7554330Z           "evidence": [
2026-06-21T07:19:09.7554439Z             {
2026-06-21T07:19:09.7554588Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7554697Z               "line": 246
2026-06-21T07:19:09.7554802Z             },
2026-06-21T07:19:09.7557581Z             {
2026-06-21T07:19:09.7557778Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7557900Z               "line": 279
2026-06-21T07:19:09.7558005Z             },
2026-06-21T07:19:09.7558107Z             {
2026-06-21T07:19:09.7558262Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7558371Z               "line": 319
2026-06-21T07:19:09.7558466Z             },
2026-06-21T07:19:09.7558570Z             {
2026-06-21T07:19:09.7558722Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7558828Z               "line": 599
2026-06-21T07:19:09.7558922Z             },
2026-06-21T07:19:09.7559114Z             {
2026-06-21T07:19:09.7559256Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7559362Z               "line": 672
2026-06-21T07:19:09.7559457Z             },
2026-06-21T07:19:09.7559561Z             {
2026-06-21T07:19:09.7559700Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7559805Z               "line": 816
2026-06-21T07:19:09.7559909Z             },
2026-06-21T07:19:09.7560015Z             {
2026-06-21T07:19:09.7560157Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.7560262Z               "line": 595
2026-06-21T07:19:09.7560358Z             },
2026-06-21T07:19:09.7560453Z             {
2026-06-21T07:19:09.7560597Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T07:19:09.7560702Z               "line": 399
2026-06-21T07:19:09.7560805Z             },
2026-06-21T07:19:09.7560902Z             {
2026-06-21T07:19:09.7561031Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7561148Z               "line": 8976
2026-06-21T07:19:09.7561248Z             },
2026-06-21T07:19:09.7561357Z             {
2026-06-21T07:19:09.7561474Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7561584Z               "line": 9300
2026-06-21T07:19:09.7561681Z             },
2026-06-21T07:19:09.7561785Z             {
2026-06-21T07:19:09.7561914Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7562019Z               "line": 9717
2026-06-21T07:19:09.7562123Z             }
2026-06-21T07:19:09.7562229Z           ]
2026-06-21T07:19:09.7562334Z         }
2026-06-21T07:19:09.7562433Z       }
2026-06-21T07:19:09.7562533Z     },
2026-06-21T07:19:09.7562629Z     {
2026-06-21T07:19:09.7562753Z       "id": "REQ-SHELL-2",
2026-06-21T07:19:09.7564323Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T07:19:09.7564575Z       "requiredStages": [
2026-06-21T07:19:09.7564684Z         "impl",
2026-06-21T07:19:09.7564786Z         "unit",
2026-06-21T07:19:09.7564999Z         "int"
2026-06-21T07:19:09.7565124Z       ],
2026-06-21T07:19:09.7565243Z       "stages": {
2026-06-21T07:19:09.7565352Z         "doc": {
2026-06-21T07:19:09.7565463Z           "complete": false,
2026-06-21T07:19:09.7565582Z           "evidence": []
2026-06-21T07:19:09.7565682Z         },
2026-06-21T07:19:09.7565788Z         "impl": {
2026-06-21T07:19:09.7565895Z           "complete": true,
2026-06-21T07:19:09.7566001Z           "evidence": [
2026-06-21T07:19:09.7566103Z             {
2026-06-21T07:19:09.7566264Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.7566375Z               "line": 217
2026-06-21T07:19:09.7566479Z             },
2026-06-21T07:19:09.7566582Z             {
2026-06-21T07:19:09.7566735Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7566840Z               "line": 403
2026-06-21T07:19:09.7566949Z             },
2026-06-21T07:19:09.7567044Z             {
2026-06-21T07:19:09.7567192Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T07:19:09.7567306Z               "line": 250
2026-06-21T07:19:09.7567398Z             },
2026-06-21T07:19:09.7567498Z             {
2026-06-21T07:19:09.7567645Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.7567755Z               "line": 403
2026-06-21T07:19:09.7567855Z             },
2026-06-21T07:19:09.7567955Z             {
2026-06-21T07:19:09.7568107Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7568208Z               "line": 30
2026-06-21T07:19:09.7568304Z             },
2026-06-21T07:19:09.7568404Z             {
2026-06-21T07:19:09.7568551Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7568658Z               "line": 409
2026-06-21T07:19:09.7568765Z             },
2026-06-21T07:19:09.7568864Z             {
2026-06-21T07:19:09.7569096Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7569200Z               "line": 445
2026-06-21T07:19:09.7569302Z             },
2026-06-21T07:19:09.7569411Z             {
2026-06-21T07:19:09.7569554Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7569664Z               "line": 660
2026-06-21T07:19:09.7569764Z             },
2026-06-21T07:19:09.7569863Z             {
2026-06-21T07:19:09.7570007Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.7570116Z               "line": 348
2026-06-21T07:19:09.7570222Z             },
2026-06-21T07:19:09.7570322Z             {
2026-06-21T07:19:09.7570464Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7570566Z               "line": 115
2026-06-21T07:19:09.7570670Z             },
2026-06-21T07:19:09.7570779Z             {
2026-06-21T07:19:09.7570919Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7571027Z               "line": 120
2026-06-21T07:19:09.7571127Z             },
2026-06-21T07:19:09.7571229Z             {
2026-06-21T07:19:09.7571370Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7571467Z               "line": 374
2026-06-21T07:19:09.7571572Z             },
2026-06-21T07:19:09.7571675Z             {
2026-06-21T07:19:09.7571817Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7571926Z               "line": 500
2026-06-21T07:19:09.7572026Z             },
2026-06-21T07:19:09.7572125Z             {
2026-06-21T07:19:09.7572264Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7572373Z               "line": 24
2026-06-21T07:19:09.7572469Z             },
2026-06-21T07:19:09.7572569Z             {
2026-06-21T07:19:09.7572716Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7572908Z               "line": 76
2026-06-21T07:19:09.7573012Z             },
2026-06-21T07:19:09.7573113Z             {
2026-06-21T07:19:09.7573255Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7573355Z               "line": 154
2026-06-21T07:19:09.7573551Z             },
2026-06-21T07:19:09.7573656Z             {
2026-06-21T07:19:09.7573795Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7573904Z               "line": 177
2026-06-21T07:19:09.7574004Z             },
2026-06-21T07:19:09.7574110Z             {
2026-06-21T07:19:09.7574251Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7574355Z               "line": 273
2026-06-21T07:19:09.7574461Z             },
2026-06-21T07:19:09.7574554Z             {
2026-06-21T07:19:09.7574702Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7574812Z               "line": 456
2026-06-21T07:19:09.7574916Z             },
2026-06-21T07:19:09.7575021Z             {
2026-06-21T07:19:09.7575165Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7575264Z               "line": 538
2026-06-21T07:19:09.7575365Z             },
2026-06-21T07:19:09.7575465Z             {
2026-06-21T07:19:09.7575617Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T07:19:09.7575728Z               "line": 27
2026-06-21T07:19:09.7575837Z             },
2026-06-21T07:19:09.7575937Z             {
2026-06-21T07:19:09.7576090Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T07:19:09.7576194Z               "line": 48
2026-06-21T07:19:09.7576300Z             },
2026-06-21T07:19:09.7576395Z             {
2026-06-21T07:19:09.7576537Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7576648Z               "line": 517
2026-06-21T07:19:09.7576747Z             },
2026-06-21T07:19:09.7576847Z             {
2026-06-21T07:19:09.7576972Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7577081Z               "line": 1921
2026-06-21T07:19:09.7577185Z             },
2026-06-21T07:19:09.7577290Z             {
2026-06-21T07:19:09.7577419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7577518Z               "line": 6334
2026-06-21T07:19:09.7577629Z             },
2026-06-21T07:19:09.7577725Z             {
2026-06-21T07:19:09.7577847Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7577954Z               "line": 6395
2026-06-21T07:19:09.7578054Z             },
2026-06-21T07:19:09.7578148Z             {
2026-06-21T07:19:09.7578268Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7578372Z               "line": 6423
2026-06-21T07:19:09.7578472Z             },
2026-06-21T07:19:09.7578578Z             {
2026-06-21T07:19:09.7578696Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7578801Z               "line": 6477
2026-06-21T07:19:09.7578907Z             },
2026-06-21T07:19:09.7579082Z             {
2026-06-21T07:19:09.7579208Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7579316Z               "line": 6732
2026-06-21T07:19:09.7579420Z             },
2026-06-21T07:19:09.7579520Z             {
2026-06-21T07:19:09.7579647Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7579761Z               "line": 6792
2026-06-21T07:19:09.7579857Z             },
2026-06-21T07:19:09.7579953Z             {
2026-06-21T07:19:09.7580076Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7580181Z               "line": 298
2026-06-21T07:19:09.7580282Z             },
2026-06-21T07:19:09.7580381Z             {
2026-06-21T07:19:09.7580516Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7580620Z               "line": 339
2026-06-21T07:19:09.7580719Z             }
2026-06-21T07:19:09.7580821Z           ]
2026-06-21T07:19:09.7580925Z         },
2026-06-21T07:19:09.7581029Z         "int": {
2026-06-21T07:19:09.7581244Z           "complete": true,
2026-06-21T07:19:09.7581354Z           "evidence": [
2026-06-21T07:19:09.7581455Z             {
2026-06-21T07:19:09.7581611Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7581712Z               "line": 706
2026-06-21T07:19:09.7581817Z             },
2026-06-21T07:19:09.7582002Z             {
2026-06-21T07:19:09.7582155Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7582259Z               "line": 778
2026-06-21T07:19:09.7582354Z             },
2026-06-21T07:19:09.7582459Z             {
2026-06-21T07:19:09.7582600Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7582695Z               "line": 1213
2026-06-21T07:19:09.7582801Z             },
2026-06-21T07:19:09.7582900Z             {
2026-06-21T07:19:09.7583054Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T07:19:09.7583158Z               "line": 18
2026-06-21T07:19:09.7583253Z             }
2026-06-21T07:19:09.7583344Z           ]
2026-06-21T07:19:09.7583449Z         },
2026-06-21T07:19:09.7583548Z         "unit": {
2026-06-21T07:19:09.7583654Z           "complete": true,
2026-06-21T07:19:09.7583759Z           "evidence": [
2026-06-21T07:19:09.7583863Z             {
2026-06-21T07:19:09.7584003Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7584111Z               "line": 744
2026-06-21T07:19:09.7584216Z             },
2026-06-21T07:19:09.7584322Z             {
2026-06-21T07:19:09.7584454Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T07:19:09.7584559Z               "line": 796
2026-06-21T07:19:09.7584661Z             },
2026-06-21T07:19:09.7584760Z             {
2026-06-21T07:19:09.7584901Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7585006Z               "line": 705
2026-06-21T07:19:09.7585114Z             },
2026-06-21T07:19:09.7585214Z             {
2026-06-21T07:19:09.7585363Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7585472Z               "line": 754
2026-06-21T07:19:09.7585571Z             },
2026-06-21T07:19:09.7585663Z             {
2026-06-21T07:19:09.7585810Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7585926Z               "line": 778
2026-06-21T07:19:09.7586030Z             },
2026-06-21T07:19:09.7586129Z             {
2026-06-21T07:19:09.7586268Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7586377Z               "line": 603
2026-06-21T07:19:09.7586472Z             },
2026-06-21T07:19:09.7586574Z             {
2026-06-21T07:19:09.7586716Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7586821Z               "line": 624
2026-06-21T07:19:09.7586922Z             },
2026-06-21T07:19:09.7587026Z             {
2026-06-21T07:19:09.7587170Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7587270Z               "line": 660
2026-06-21T07:19:09.7587374Z             },
2026-06-21T07:19:09.7587480Z             {
2026-06-21T07:19:09.7587622Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7587731Z               "line": 714
2026-06-21T07:19:09.7587821Z             },
2026-06-21T07:19:09.7587927Z             {
2026-06-21T07:19:09.7588064Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7588174Z               "line": 732
2026-06-21T07:19:09.7588280Z             },
2026-06-21T07:19:09.7588374Z             {
2026-06-21T07:19:09.7588514Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7588619Z               "line": 766
2026-06-21T07:19:09.7588722Z             },
2026-06-21T07:19:09.7588823Z             {
2026-06-21T07:19:09.7589027Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T07:19:09.7589143Z               "line": 841
2026-06-21T07:19:09.7589242Z             },
2026-06-21T07:19:09.7589347Z             {
2026-06-21T07:19:09.7589849Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T07:19:09.7589961Z               "line": 85
2026-06-21T07:19:09.7590062Z             },
2026-06-21T07:19:09.7590161Z             {
2026-06-21T07:19:09.7590288Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7590388Z               "line": 8044
2026-06-21T07:19:09.7590579Z             },
2026-06-21T07:19:09.7590674Z             {
2026-06-21T07:19:09.7590803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7590902Z               "line": 9054
2026-06-21T07:19:09.7591003Z             },
2026-06-21T07:19:09.7591104Z             {
2026-06-21T07:19:09.7591227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7591338Z               "line": 9124
2026-06-21T07:19:09.7591437Z             },
2026-06-21T07:19:09.7591537Z             {
2026-06-21T07:19:09.7591671Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7591776Z               "line": 9162
2026-06-21T07:19:09.7591875Z             }
2026-06-21T07:19:09.7591977Z           ]
2026-06-21T07:19:09.7592077Z         }
2026-06-21T07:19:09.7592172Z       }
2026-06-21T07:19:09.7592277Z     },
2026-06-21T07:19:09.7592382Z     {
2026-06-21T07:19:09.7592486Z       "id": "REQ-SHELL-3",
2026-06-21T07:19:09.7594342Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T07:19:09.7594466Z       "requiredStages": [
2026-06-21T07:19:09.7594568Z         "impl",
2026-06-21T07:19:09.7594681Z         "unit",
2026-06-21T07:19:09.7594776Z         "int"
2026-06-21T07:19:09.7594868Z       ],
2026-06-21T07:19:09.7594977Z       "stages": {
2026-06-21T07:19:09.7595086Z         "doc": {
2026-06-21T07:19:09.7595202Z           "complete": false,
2026-06-21T07:19:09.7595310Z           "evidence": []
2026-06-21T07:19:09.7595414Z         },
2026-06-21T07:19:09.7595524Z         "impl": {
2026-06-21T07:19:09.7595660Z           "complete": true,
2026-06-21T07:19:09.7595764Z           "evidence": [
2026-06-21T07:19:09.7595870Z             {
2026-06-21T07:19:09.7596022Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.7596132Z               "line": 229
2026-06-21T07:19:09.7596233Z             },
2026-06-21T07:19:09.7596327Z             {
2026-06-21T07:19:09.7596528Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7596666Z               "line": 36
2026-06-21T07:19:09.7596766Z             },
2026-06-21T07:19:09.7596876Z             {
2026-06-21T07:19:09.7597033Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7597148Z               "line": 137
2026-06-21T07:19:09.7597257Z             },
2026-06-21T07:19:09.7597357Z             {
2026-06-21T07:19:09.7597492Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7597610Z               "line": 153
2026-06-21T07:19:09.7597706Z             },
2026-06-21T07:19:09.7597811Z             {
2026-06-21T07:19:09.7597944Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7598045Z               "line": 165
2026-06-21T07:19:09.7598154Z             },
2026-06-21T07:19:09.7598258Z             {
2026-06-21T07:19:09.7598406Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7598511Z               "line": 242
2026-06-21T07:19:09.7598610Z             },
2026-06-21T07:19:09.7598711Z             {
2026-06-21T07:19:09.7598854Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7599145Z               "line": 267
2026-06-21T07:19:09.7599249Z             },
2026-06-21T07:19:09.7599345Z             {
2026-06-21T07:19:09.7599531Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7599640Z               "line": 293
2026-06-21T07:19:09.7599751Z             },
2026-06-21T07:19:09.7599960Z             {
2026-06-21T07:19:09.7600122Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T07:19:09.7600231Z               "line": 51
2026-06-21T07:19:09.7600333Z             },
2026-06-21T07:19:09.7600436Z             {
2026-06-21T07:19:09.7600583Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7600688Z               "line": 333
2026-06-21T07:19:09.7600791Z             },
2026-06-21T07:19:09.7600886Z             {
2026-06-21T07:19:09.7601030Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7601129Z               "line": 373
2026-06-21T07:19:09.7601239Z             },
2026-06-21T07:19:09.7601340Z             {
2026-06-21T07:19:09.7601486Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7601593Z               "line": 602
2026-06-21T07:19:09.7601692Z             },
2026-06-21T07:19:09.7601801Z             {
2026-06-21T07:19:09.7601946Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7602055Z               "line": 132
2026-06-21T07:19:09.7602159Z             },
2026-06-21T07:19:09.7602265Z             {
2026-06-21T07:19:09.7602417Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7602527Z               "line": 448
2026-06-21T07:19:09.7602632Z             },
2026-06-21T07:19:09.7602732Z             {
2026-06-21T07:19:09.7602880Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T07:19:09.7602989Z               "line": 74
2026-06-21T07:19:09.7603094Z             },
2026-06-21T07:19:09.7603195Z             {
2026-06-21T07:19:09.7603336Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7603450Z               "line": 605
2026-06-21T07:19:09.7603560Z             },
2026-06-21T07:19:09.7603668Z             {
2026-06-21T07:19:09.7603825Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7603955Z               "line": 396
2026-06-21T07:19:09.7604058Z             },
2026-06-21T07:19:09.7604159Z             {
2026-06-21T07:19:09.7604284Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7604387Z               "line": 6518
2026-06-21T07:19:09.7604498Z             }
2026-06-21T07:19:09.7604593Z           ]
2026-06-21T07:19:09.7604692Z         },
2026-06-21T07:19:09.7604803Z         "int": {
2026-06-21T07:19:09.7604917Z           "complete": true,
2026-06-21T07:19:09.7605036Z           "evidence": [
2026-06-21T07:19:09.7605142Z             {
2026-06-21T07:19:09.7605293Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7605394Z               "line": 1262
2026-06-21T07:19:09.7605500Z             },
2026-06-21T07:19:09.7605613Z             {
2026-06-21T07:19:09.7605747Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T07:19:09.7605856Z               "line": 17
2026-06-21T07:19:09.7605960Z             }
2026-06-21T07:19:09.7606065Z           ]
2026-06-21T07:19:09.7606169Z         },
2026-06-21T07:19:09.7606277Z         "unit": {
2026-06-21T07:19:09.7606401Z           "complete": true,
2026-06-21T07:19:09.7606507Z           "evidence": [
2026-06-21T07:19:09.7606611Z             {
2026-06-21T07:19:09.7606755Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7606873Z               "line": 311
2026-06-21T07:19:09.7606973Z             },
2026-06-21T07:19:09.7607079Z             {
2026-06-21T07:19:09.7607226Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7607322Z               "line": 325
2026-06-21T07:19:09.7607426Z             },
2026-06-21T07:19:09.7607517Z             {
2026-06-21T07:19:09.7607665Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7607865Z               "line": 343
2026-06-21T07:19:09.7608005Z             },
2026-06-21T07:19:09.7608113Z             {
2026-06-21T07:19:09.7608242Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7608353Z               "line": 364
2026-06-21T07:19:09.7608518Z             },
2026-06-21T07:19:09.7608615Z             {
2026-06-21T07:19:09.7608761Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T07:19:09.7608879Z               "line": 376
2026-06-21T07:19:09.7609052Z             },
2026-06-21T07:19:09.7609151Z             {
2026-06-21T07:19:09.7609295Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7609405Z               "line": 897
2026-06-21T07:19:09.7609508Z             },
2026-06-21T07:19:09.7609610Z             {
2026-06-21T07:19:09.7609762Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7609867Z               "line": 957
2026-06-21T07:19:09.7609972Z             },
2026-06-21T07:19:09.7610067Z             {
2026-06-21T07:19:09.7610201Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T07:19:09.7610316Z               "line": 338
2026-06-21T07:19:09.7610415Z             },
2026-06-21T07:19:09.7610516Z             {
2026-06-21T07:19:09.7610649Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7610763Z               "line": 769
2026-06-21T07:19:09.7610859Z             },
2026-06-21T07:19:09.7610964Z             {
2026-06-21T07:19:09.7611096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7611206Z               "line": 8836
2026-06-21T07:19:09.7611309Z             }
2026-06-21T07:19:09.7611413Z           ]
2026-06-21T07:19:09.7611509Z         }
2026-06-21T07:19:09.7611609Z       }
2026-06-21T07:19:09.7611708Z     },
2026-06-21T07:19:09.7611808Z     {
2026-06-21T07:19:09.7611924Z       "id": "REQ-SHELL-4",
2026-06-21T07:19:09.7613770Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T07:19:09.7613902Z       "requiredStages": [
2026-06-21T07:19:09.7614006Z         "doc",
2026-06-21T07:19:09.7614115Z         "impl",
2026-06-21T07:19:09.7614223Z         "unit",
2026-06-21T07:19:09.7614323Z         "int"
2026-06-21T07:19:09.7614423Z       ],
2026-06-21T07:19:09.7614524Z       "stages": {
2026-06-21T07:19:09.7614633Z         "doc": {
2026-06-21T07:19:09.7614739Z           "complete": true,
2026-06-21T07:19:09.7614849Z           "evidence": [
2026-06-21T07:19:09.7614952Z             {
2026-06-21T07:19:09.7615073Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7615182Z               "line": 281
2026-06-21T07:19:09.7615281Z             },
2026-06-21T07:19:09.7615382Z             {
2026-06-21T07:19:09.7615639Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T07:19:09.7615759Z               "line": 88
2026-06-21T07:19:09.7615863Z             }
2026-06-21T07:19:09.7615964Z           ]
2026-06-21T07:19:09.7616065Z         },
2026-06-21T07:19:09.7616168Z         "impl": {
2026-06-21T07:19:09.7616284Z           "complete": true,
2026-06-21T07:19:09.7616389Z           "evidence": [
2026-06-21T07:19:09.7616487Z             {
2026-06-21T07:19:09.7616639Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.7616748Z               "line": 243
2026-06-21T07:19:09.7616851Z             },
2026-06-21T07:19:09.7616947Z             {
2026-06-21T07:19:09.7617095Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T07:19:09.7617306Z               "line": 61
2026-06-21T07:19:09.7617415Z             },
2026-06-21T07:19:09.7617524Z             {
2026-06-21T07:19:09.7617667Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7617781Z               "line": 218
2026-06-21T07:19:09.7617973Z             },
2026-06-21T07:19:09.7618077Z             {
2026-06-21T07:19:09.7618221Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7618325Z               "line": 245
2026-06-21T07:19:09.7618434Z             },
2026-06-21T07:19:09.7618531Z             {
2026-06-21T07:19:09.7618678Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7618788Z               "line": 616
2026-06-21T07:19:09.7618894Z             },
2026-06-21T07:19:09.7619093Z             {
2026-06-21T07:19:09.7619228Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7619349Z               "line": 1191
2026-06-21T07:19:09.7619468Z             },
2026-06-21T07:19:09.7619569Z             {
2026-06-21T07:19:09.7619716Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7619821Z               "line": 1203
2026-06-21T07:19:09.7619931Z             },
2026-06-21T07:19:09.7620031Z             {
2026-06-21T07:19:09.7620180Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7620284Z               "line": 1244
2026-06-21T07:19:09.7620388Z             },
2026-06-21T07:19:09.7620490Z             {
2026-06-21T07:19:09.7620637Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7620741Z               "line": 456
2026-06-21T07:19:09.7620847Z             },
2026-06-21T07:19:09.7620951Z             {
2026-06-21T07:19:09.7621090Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7621200Z               "line": 44
2026-06-21T07:19:09.7621289Z             },
2026-06-21T07:19:09.7621385Z             {
2026-06-21T07:19:09.7621534Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7621637Z               "line": 208
2026-06-21T07:19:09.7621742Z             },
2026-06-21T07:19:09.7621837Z             {
2026-06-21T07:19:09.7621978Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7622083Z               "line": 227
2026-06-21T07:19:09.7622189Z             },
2026-06-21T07:19:09.7622292Z             {
2026-06-21T07:19:09.7622436Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7622555Z               "line": 253
2026-06-21T07:19:09.7622654Z             },
2026-06-21T07:19:09.7622761Z             {
2026-06-21T07:19:09.7622908Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7623013Z               "line": 272
2026-06-21T07:19:09.7623128Z             },
2026-06-21T07:19:09.7623227Z             {
2026-06-21T07:19:09.7623367Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7623475Z               "line": 392
2026-06-21T07:19:09.7623584Z             },
2026-06-21T07:19:09.7623686Z             {
2026-06-21T07:19:09.7623837Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7623948Z               "line": 421
2026-06-21T07:19:09.7624048Z             },
2026-06-21T07:19:09.7624147Z             {
2026-06-21T07:19:09.7624287Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7624401Z               "line": 439
2026-06-21T07:19:09.7624509Z             },
2026-06-21T07:19:09.7624609Z             {
2026-06-21T07:19:09.7624751Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7624859Z               "line": 458
2026-06-21T07:19:09.7624965Z             },
2026-06-21T07:19:09.7625060Z             {
2026-06-21T07:19:09.7625217Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7625323Z               "line": 486
2026-06-21T07:19:09.7625423Z             },
2026-06-21T07:19:09.7625526Z             {
2026-06-21T07:19:09.7625766Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7625875Z               "line": 624
2026-06-21T07:19:09.7625976Z             },
2026-06-21T07:19:09.7626076Z             {
2026-06-21T07:19:09.7626224Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7626424Z               "line": 829
2026-06-21T07:19:09.7626534Z             },
2026-06-21T07:19:09.7626634Z             {
2026-06-21T07:19:09.7626781Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7626887Z               "line": 435
2026-06-21T07:19:09.7627000Z             },
2026-06-21T07:19:09.7627109Z             {
2026-06-21T07:19:09.7627238Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7627355Z               "line": 6574
2026-06-21T07:19:09.7627454Z             }
2026-06-21T07:19:09.7627550Z           ]
2026-06-21T07:19:09.7627651Z         },
2026-06-21T07:19:09.7627760Z         "int": {
2026-06-21T07:19:09.7627875Z           "complete": true,
2026-06-21T07:19:09.7627975Z           "evidence": [
2026-06-21T07:19:09.7628084Z             {
2026-06-21T07:19:09.7628232Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T07:19:09.7628341Z               "line": 18
2026-06-21T07:19:09.7628432Z             }
2026-06-21T07:19:09.7628538Z           ]
2026-06-21T07:19:09.7628638Z         },
2026-06-21T07:19:09.7628742Z         "unit": {
2026-06-21T07:19:09.7628858Z           "complete": true,
2026-06-21T07:19:09.7629028Z           "evidence": [
2026-06-21T07:19:09.7629134Z             {
2026-06-21T07:19:09.7629276Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7629396Z               "line": 1479
2026-06-21T07:19:09.7629501Z             },
2026-06-21T07:19:09.7629595Z             {
2026-06-21T07:19:09.7629740Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7629849Z               "line": 1508
2026-06-21T07:19:09.7629952Z             },
2026-06-21T07:19:09.7630057Z             {
2026-06-21T07:19:09.7630205Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7630324Z               "line": 504
2026-06-21T07:19:09.7630415Z             },
2026-06-21T07:19:09.7630520Z             {
2026-06-21T07:19:09.7630662Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7630768Z               "line": 514
2026-06-21T07:19:09.7630868Z             },
2026-06-21T07:19:09.7630972Z             {
2026-06-21T07:19:09.7631121Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7631225Z               "line": 531
2026-06-21T07:19:09.7631331Z             },
2026-06-21T07:19:09.7631431Z             {
2026-06-21T07:19:09.7631578Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7631689Z               "line": 543
2026-06-21T07:19:09.7631779Z             },
2026-06-21T07:19:09.7631888Z             {
2026-06-21T07:19:09.7632019Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T07:19:09.7632126Z               "line": 555
2026-06-21T07:19:09.7632230Z             },
2026-06-21T07:19:09.7632336Z             {
2026-06-21T07:19:09.7632481Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7632585Z               "line": 1145
2026-06-21T07:19:09.7632696Z             },
2026-06-21T07:19:09.7632796Z             {
2026-06-21T07:19:09.7632938Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7633049Z               "line": 776
2026-06-21T07:19:09.7633153Z             }
2026-06-21T07:19:09.7633263Z           ]
2026-06-21T07:19:09.7633359Z         }
2026-06-21T07:19:09.7633463Z       }
2026-06-21T07:19:09.7633559Z     },
2026-06-21T07:19:09.7633668Z     {
2026-06-21T07:19:09.7633773Z       "id": "REQ-SHELL-5",
2026-06-21T07:19:09.7635032Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T07:19:09.7635278Z       "requiredStages": [
2026-06-21T07:19:09.7635381Z         "doc",
2026-06-21T07:19:09.7635573Z         "impl",
2026-06-21T07:19:09.7635677Z         "unit",
2026-06-21T07:19:09.7635782Z         "int"
2026-06-21T07:19:09.7635883Z       ],
2026-06-21T07:19:09.7635987Z       "stages": {
2026-06-21T07:19:09.7636091Z         "doc": {
2026-06-21T07:19:09.7636202Z           "complete": true,
2026-06-21T07:19:09.7636316Z           "evidence": [
2026-06-21T07:19:09.7636416Z             {
2026-06-21T07:19:09.7636546Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7636659Z               "line": 284
2026-06-21T07:19:09.7636755Z             }
2026-06-21T07:19:09.7636860Z           ]
2026-06-21T07:19:09.7636954Z         },
2026-06-21T07:19:09.7637060Z         "impl": {
2026-06-21T07:19:09.7637161Z           "complete": true,
2026-06-21T07:19:09.7637264Z           "evidence": [
2026-06-21T07:19:09.7637375Z             {
2026-06-21T07:19:09.7637523Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T07:19:09.7637631Z               "line": 260
2026-06-21T07:19:09.7637736Z             }
2026-06-21T07:19:09.7637840Z           ]
2026-06-21T07:19:09.7637943Z         },
2026-06-21T07:19:09.7638053Z         "int": {
2026-06-21T07:19:09.7638163Z           "complete": true,
2026-06-21T07:19:09.7638262Z           "evidence": [
2026-06-21T07:19:09.7638363Z             {
2026-06-21T07:19:09.7638511Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7638615Z               "line": 827
2026-06-21T07:19:09.7642235Z             },
2026-06-21T07:19:09.7642371Z             {
2026-06-21T07:19:09.7642549Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7642663Z               "line": 1290
2026-06-21T07:19:09.7642776Z             },
2026-06-21T07:19:09.7642876Z             {
2026-06-21T07:19:09.7643055Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T07:19:09.7643160Z               "line": 23
2026-06-21T07:19:09.7643266Z             }
2026-06-21T07:19:09.7643370Z           ]
2026-06-21T07:19:09.7643470Z         },
2026-06-21T07:19:09.7643576Z         "unit": {
2026-06-21T07:19:09.7643689Z           "complete": true,
2026-06-21T07:19:09.7643799Z           "evidence": [
2026-06-21T07:19:09.7643900Z             {
2026-06-21T07:19:09.7644061Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T07:19:09.7644167Z               "line": 803
2026-06-21T07:19:09.7644262Z             }
2026-06-21T07:19:09.7644361Z           ]
2026-06-21T07:19:09.7644462Z         }
2026-06-21T07:19:09.7644567Z       }
2026-06-21T07:19:09.7644662Z     },
2026-06-21T07:19:09.7644763Z     {
2026-06-21T07:19:09.7644882Z       "id": "REQ-START-1",
2026-06-21T07:19:09.7645097Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T07:19:09.7645215Z       "requiredStages": [
2026-06-21T07:19:09.7645320Z         "impl",
2026-06-21T07:19:09.7645421Z         "unit"
2026-06-21T07:19:09.7645521Z       ],
2026-06-21T07:19:09.7645629Z       "stages": {
2026-06-21T07:19:09.7645729Z         "doc": {
2026-06-21T07:19:09.7645847Z           "complete": false,
2026-06-21T07:19:09.7645951Z           "evidence": []
2026-06-21T07:19:09.7646046Z         },
2026-06-21T07:19:09.7646157Z         "impl": {
2026-06-21T07:19:09.7646270Z           "complete": true,
2026-06-21T07:19:09.7646375Z           "evidence": [
2026-06-21T07:19:09.7646481Z             {
2026-06-21T07:19:09.7646623Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T07:19:09.7646729Z               "line": 16
2026-06-21T07:19:09.7646833Z             }
2026-06-21T07:19:09.7646938Z           ]
2026-06-21T07:19:09.7647039Z         },
2026-06-21T07:19:09.7647143Z         "int": {
2026-06-21T07:19:09.7647262Z           "complete": false,
2026-06-21T07:19:09.7647514Z           "evidence": []
2026-06-21T07:19:09.7647625Z         },
2026-06-21T07:19:09.7647721Z         "unit": {
2026-06-21T07:19:09.7647839Z           "complete": true,
2026-06-21T07:19:09.7647945Z           "evidence": [
2026-06-21T07:19:09.7648050Z             {
2026-06-21T07:19:09.7648286Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T07:19:09.7648396Z               "line": 48
2026-06-21T07:19:09.7648499Z             },
2026-06-21T07:19:09.7648603Z             {
2026-06-21T07:19:09.7648743Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T07:19:09.7648841Z               "line": 63
2026-06-21T07:19:09.7649029Z             }
2026-06-21T07:19:09.7649128Z           ]
2026-06-21T07:19:09.7649214Z         }
2026-06-21T07:19:09.7649315Z       }
2026-06-21T07:19:09.7649429Z     },
2026-06-21T07:19:09.7649528Z     {
2026-06-21T07:19:09.7649644Z       "id": "REQ-START-2",
2026-06-21T07:19:09.7649819Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T07:19:09.7649944Z       "requiredStages": [
2026-06-21T07:19:09.7650034Z         "impl",
2026-06-21T07:19:09.7650138Z         "unit",
2026-06-21T07:19:09.7650240Z         "int"
2026-06-21T07:19:09.7650349Z       ],
2026-06-21T07:19:09.7650449Z       "stages": {
2026-06-21T07:19:09.7650555Z         "doc": {
2026-06-21T07:19:09.7650668Z           "complete": false,
2026-06-21T07:19:09.7650773Z           "evidence": []
2026-06-21T07:19:09.7650875Z         },
2026-06-21T07:19:09.7650974Z         "impl": {
2026-06-21T07:19:09.7651092Z           "complete": true,
2026-06-21T07:19:09.7651197Z           "evidence": [
2026-06-21T07:19:09.7651303Z             {
2026-06-21T07:19:09.7651444Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7651545Z               "line": 16
2026-06-21T07:19:09.7651651Z             },
2026-06-21T07:19:09.7651749Z             {
2026-06-21T07:19:09.7651889Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7651993Z               "line": 115
2026-06-21T07:19:09.7652093Z             },
2026-06-21T07:19:09.7652199Z             {
2026-06-21T07:19:09.7652322Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7652436Z               "line": 300
2026-06-21T07:19:09.7652533Z             }
2026-06-21T07:19:09.7652642Z           ]
2026-06-21T07:19:09.7652737Z         },
2026-06-21T07:19:09.7652833Z         "int": {
2026-06-21T07:19:09.7652946Z           "complete": true,
2026-06-21T07:19:09.7653052Z           "evidence": [
2026-06-21T07:19:09.7653158Z             {
2026-06-21T07:19:09.7653298Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.7653403Z               "line": 186
2026-06-21T07:19:09.7653503Z             }
2026-06-21T07:19:09.7653606Z           ]
2026-06-21T07:19:09.7653710Z         },
2026-06-21T07:19:09.7653816Z         "unit": {
2026-06-21T07:19:09.7653930Z           "complete": true,
2026-06-21T07:19:09.7654030Z           "evidence": [
2026-06-21T07:19:09.7654136Z             {
2026-06-21T07:19:09.7654268Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7654379Z               "line": 590
2026-06-21T07:19:09.7654483Z             },
2026-06-21T07:19:09.7654583Z             {
2026-06-21T07:19:09.7654727Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7654827Z               "line": 623
2026-06-21T07:19:09.7654931Z             }
2026-06-21T07:19:09.7655032Z           ]
2026-06-21T07:19:09.7655127Z         }
2026-06-21T07:19:09.7655232Z       }
2026-06-21T07:19:09.7655328Z     },
2026-06-21T07:19:09.7655423Z     {
2026-06-21T07:19:09.7655542Z       "id": "REQ-START-3",
2026-06-21T07:19:09.7655743Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T07:19:09.7655856Z       "requiredStages": [
2026-06-21T07:19:09.7655963Z         "impl",
2026-06-21T07:19:09.7656076Z         "unit",
2026-06-21T07:19:09.7656175Z         "int"
2026-06-21T07:19:09.7656280Z       ],
2026-06-21T07:19:09.7656487Z       "stages": {
2026-06-21T07:19:09.7656592Z         "doc": {
2026-06-21T07:19:09.7656707Z           "complete": false,
2026-06-21T07:19:09.7656816Z           "evidence": []
2026-06-21T07:19:09.7656926Z         },
2026-06-21T07:19:09.7657027Z         "impl": {
2026-06-21T07:19:09.7657236Z           "complete": true,
2026-06-21T07:19:09.7657341Z           "evidence": [
2026-06-21T07:19:09.7657446Z             {
2026-06-21T07:19:09.7657584Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7657694Z               "line": 23
2026-06-21T07:19:09.7657799Z             },
2026-06-21T07:19:09.7657899Z             {
2026-06-21T07:19:09.7658051Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7658165Z               "line": 205
2026-06-21T07:19:09.7658272Z             },
2026-06-21T07:19:09.7658356Z             {
2026-06-21T07:19:09.7658495Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7658601Z               "line": 221
2026-06-21T07:19:09.7658704Z             },
2026-06-21T07:19:09.7658808Z             {
2026-06-21T07:19:09.7659030Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7659125Z               "line": 17
2026-06-21T07:19:09.7659230Z             },
2026-06-21T07:19:09.7659336Z             {
2026-06-21T07:19:09.7659502Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7659613Z               "line": 35
2026-06-21T07:19:09.7659717Z             },
2026-06-21T07:19:09.7659812Z             {
2026-06-21T07:19:09.7659951Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7660055Z               "line": 116
2026-06-21T07:19:09.7660161Z             }
2026-06-21T07:19:09.7660265Z           ]
2026-06-21T07:19:09.7660365Z         },
2026-06-21T07:19:09.7660471Z         "int": {
2026-06-21T07:19:09.7660580Z           "complete": true,
2026-06-21T07:19:09.7660694Z           "evidence": [
2026-06-21T07:19:09.7660786Z             {
2026-06-21T07:19:09.7660937Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T07:19:09.7661037Z               "line": 488
2026-06-21T07:19:09.7661129Z             }
2026-06-21T07:19:09.7661228Z           ]
2026-06-21T07:19:09.7661333Z         },
2026-06-21T07:19:09.7661435Z         "unit": {
2026-06-21T07:19:09.7661539Z           "complete": true,
2026-06-21T07:19:09.7661647Z           "evidence": [
2026-06-21T07:19:09.7661752Z             {
2026-06-21T07:19:09.7661891Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7661995Z               "line": 381
2026-06-21T07:19:09.7662095Z             },
2026-06-21T07:19:09.7662196Z             {
2026-06-21T07:19:09.7662343Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7662444Z               "line": 402
2026-06-21T07:19:09.7662554Z             },
2026-06-21T07:19:09.7662658Z             {
2026-06-21T07:19:09.7662797Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T07:19:09.7662901Z               "line": 412
2026-06-21T07:19:09.7663011Z             },
2026-06-21T07:19:09.7663112Z             {
2026-06-21T07:19:09.7663244Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7663350Z               "line": 591
2026-06-21T07:19:09.7663455Z             },
2026-06-21T07:19:09.7663559Z             {
2026-06-21T07:19:09.7663694Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7663793Z               "line": 624
2026-06-21T07:19:09.7663897Z             },
2026-06-21T07:19:09.7663997Z             {
2026-06-21T07:19:09.7664133Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7664237Z               "line": 657
2026-06-21T07:19:09.7664338Z             }
2026-06-21T07:19:09.7664430Z           ]
2026-06-21T07:19:09.7664533Z         }
2026-06-21T07:19:09.7664633Z       }
2026-06-21T07:19:09.7664734Z     },
2026-06-21T07:19:09.7664833Z     {
2026-06-21T07:19:09.7664944Z       "id": "REQ-START-4",
2026-06-21T07:19:09.7665210Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T07:19:09.7665316Z       "requiredStages": [
2026-06-21T07:19:09.7665421Z         "impl",
2026-06-21T07:19:09.7665525Z         "unit"
2026-06-21T07:19:09.7665621Z       ],
2026-06-21T07:19:09.7665725Z       "stages": {
2026-06-21T07:19:09.7665941Z         "doc": {
2026-06-21T07:19:09.7666054Z           "complete": false,
2026-06-21T07:19:09.7666164Z           "evidence": []
2026-06-21T07:19:09.7666266Z         },
2026-06-21T07:19:09.7666363Z         "impl": {
2026-06-21T07:19:09.7666479Z           "complete": true,
2026-06-21T07:19:09.7666585Z           "evidence": [
2026-06-21T07:19:09.7666688Z             {
2026-06-21T07:19:09.7666835Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7666940Z               "line": 585
2026-06-21T07:19:09.7667038Z             }
2026-06-21T07:19:09.7667137Z           ]
2026-06-21T07:19:09.7667239Z         },
2026-06-21T07:19:09.7667338Z         "int": {
2026-06-21T07:19:09.7667443Z           "complete": false,
2026-06-21T07:19:09.7667554Z           "evidence": []
2026-06-21T07:19:09.7667653Z         },
2026-06-21T07:19:09.7667758Z         "unit": {
2026-06-21T07:19:09.7667864Z           "complete": true,
2026-06-21T07:19:09.7667964Z           "evidence": [
2026-06-21T07:19:09.7668068Z             {
2026-06-21T07:19:09.7668207Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7668311Z               "line": 1026
2026-06-21T07:19:09.7668406Z             }
2026-06-21T07:19:09.7668508Z           ]
2026-06-21T07:19:09.7668602Z         }
2026-06-21T07:19:09.7668702Z       }
2026-06-21T07:19:09.7668808Z     },
2026-06-21T07:19:09.7668907Z     {
2026-06-21T07:19:09.7669104Z       "id": "REQ-START-5",
2026-06-21T07:19:09.7671985Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T07:19:09.7672117Z       "requiredStages": [
2026-06-21T07:19:09.7672221Z         "doc",
2026-06-21T07:19:09.7672322Z         "impl",
2026-06-21T07:19:09.7672432Z         "unit",
2026-06-21T07:19:09.7672540Z         "int"
2026-06-21T07:19:09.7672637Z       ],
2026-06-21T07:19:09.7672756Z       "stages": {
2026-06-21T07:19:09.7672846Z         "doc": {
2026-06-21T07:19:09.7672966Z           "complete": true,
2026-06-21T07:19:09.7673075Z           "evidence": [
2026-06-21T07:19:09.7673179Z             {
2026-06-21T07:19:09.7673304Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7673413Z               "line": 176
2026-06-21T07:19:09.7673523Z             },
2026-06-21T07:19:09.7673619Z             {
2026-06-21T07:19:09.7673795Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T07:19:09.7673896Z               "line": 28
2026-06-21T07:19:09.7674001Z             }
2026-06-21T07:19:09.7674105Z           ]
2026-06-21T07:19:09.7674205Z         },
2026-06-21T07:19:09.7674306Z         "impl": {
2026-06-21T07:19:09.7674418Z           "complete": true,
2026-06-21T07:19:09.7674528Z           "evidence": [
2026-06-21T07:19:09.7674624Z             {
2026-06-21T07:19:09.7674779Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.7674888Z               "line": 26
2026-06-21T07:19:09.7675093Z             },
2026-06-21T07:19:09.7675198Z             {
2026-06-21T07:19:09.7675342Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.7675455Z               "line": 212
2026-06-21T07:19:09.7675552Z             },
2026-06-21T07:19:09.7675746Z             {
2026-06-21T07:19:09.7675891Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.7675990Z               "line": 221
2026-06-21T07:19:09.7676095Z             },
2026-06-21T07:19:09.7676186Z             {
2026-06-21T07:19:09.7676329Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7676433Z               "line": 485
2026-06-21T07:19:09.7676539Z             },
2026-06-21T07:19:09.7676643Z             {
2026-06-21T07:19:09.7676778Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7676882Z               "line": 36
2026-06-21T07:19:09.7676986Z             },
2026-06-21T07:19:09.7677088Z             {
2026-06-21T07:19:09.7677220Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7677324Z               "line": 118
2026-06-21T07:19:09.7677429Z             },
2026-06-21T07:19:09.7677524Z             {
2026-06-21T07:19:09.7677655Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T07:19:09.7677765Z               "line": 329
2026-06-21T07:19:09.7677861Z             }
2026-06-21T07:19:09.7677965Z           ]
2026-06-21T07:19:09.7678066Z         },
2026-06-21T07:19:09.7678170Z         "int": {
2026-06-21T07:19:09.7678275Z           "complete": true,
2026-06-21T07:19:09.7678381Z           "evidence": [
2026-06-21T07:19:09.7678475Z             {
2026-06-21T07:19:09.7678628Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T07:19:09.7678734Z               "line": 17
2026-06-21T07:19:09.7678833Z             }
2026-06-21T07:19:09.7679024Z           ]
2026-06-21T07:19:09.7679124Z         },
2026-06-21T07:19:09.7679233Z         "unit": {
2026-06-21T07:19:09.7679339Z           "complete": true,
2026-06-21T07:19:09.7679444Z           "evidence": [
2026-06-21T07:19:09.7679548Z             {
2026-06-21T07:19:09.7679693Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.7679805Z               "line": 358
2026-06-21T07:19:09.7679900Z             },
2026-06-21T07:19:09.7679995Z             {
2026-06-21T07:19:09.7680132Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T07:19:09.7680236Z               "line": 371
2026-06-21T07:19:09.7680337Z             },
2026-06-21T07:19:09.7680437Z             {
2026-06-21T07:19:09.7680560Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T07:19:09.7680662Z               "line": 597
2026-06-21T07:19:09.7680766Z             }
2026-06-21T07:19:09.7680870Z           ]
2026-06-21T07:19:09.7680972Z         }
2026-06-21T07:19:09.7681076Z       }
2026-06-21T07:19:09.7681175Z     },
2026-06-21T07:19:09.7681272Z     {
2026-06-21T07:19:09.7681376Z       "id": "REQ-STORE-1",
2026-06-21T07:19:09.7682306Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T07:19:09.7682425Z       "requiredStages": [
2026-06-21T07:19:09.7682521Z         "impl",
2026-06-21T07:19:09.7682617Z         "unit"
2026-06-21T07:19:09.7682720Z       ],
2026-06-21T07:19:09.7682824Z       "stages": {
2026-06-21T07:19:09.7682925Z         "doc": {
2026-06-21T07:19:09.7683049Z           "complete": false,
2026-06-21T07:19:09.7683158Z           "evidence": []
2026-06-21T07:19:09.7683259Z         },
2026-06-21T07:19:09.7683363Z         "impl": {
2026-06-21T07:19:09.7683468Z           "complete": true,
2026-06-21T07:19:09.7683579Z           "evidence": [
2026-06-21T07:19:09.7683678Z             {
2026-06-21T07:19:09.7683836Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7684050Z               "line": 23
2026-06-21T07:19:09.7684146Z             },
2026-06-21T07:19:09.7684255Z             {
2026-06-21T07:19:09.7684402Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7684508Z               "line": 46
2026-06-21T07:19:09.7684703Z             },
2026-06-21T07:19:09.7684809Z             {
2026-06-21T07:19:09.7684955Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7685060Z               "line": 97
2026-06-21T07:19:09.7685164Z             },
2026-06-21T07:19:09.7685263Z             {
2026-06-21T07:19:09.7685400Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7685516Z               "line": 125
2026-06-21T07:19:09.7685611Z             },
2026-06-21T07:19:09.7685715Z             {
2026-06-21T07:19:09.7685863Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7685972Z               "line": 207
2026-06-21T07:19:09.7686074Z             },
2026-06-21T07:19:09.7686178Z             {
2026-06-21T07:19:09.7686330Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7686436Z               "line": 231
2026-06-21T07:19:09.7686541Z             },
2026-06-21T07:19:09.7686645Z             {
2026-06-21T07:19:09.7686798Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7686903Z               "line": 467
2026-06-21T07:19:09.7687013Z             },
2026-06-21T07:19:09.7687118Z             {
2026-06-21T07:19:09.7687265Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7687376Z               "line": 25
2026-06-21T07:19:09.7687475Z             },
2026-06-21T07:19:09.7687575Z             {
2026-06-21T07:19:09.7687715Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7687827Z               "line": 120
2026-06-21T07:19:09.7687931Z             },
2026-06-21T07:19:09.7688027Z             {
2026-06-21T07:19:09.7688182Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7688287Z               "line": 148
2026-06-21T07:19:09.7688392Z             },
2026-06-21T07:19:09.7688492Z             {
2026-06-21T07:19:09.7688645Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7688750Z               "line": 165
2026-06-21T07:19:09.7688849Z             },
2026-06-21T07:19:09.7689041Z             {
2026-06-21T07:19:09.7689178Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7689299Z               "line": 180
2026-06-21T07:19:09.7689417Z             },
2026-06-21T07:19:09.7689517Z             {
2026-06-21T07:19:09.7689675Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7689779Z               "line": 198
2026-06-21T07:19:09.7689885Z             },
2026-06-21T07:19:09.7689976Z             {
2026-06-21T07:19:09.7690127Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7690243Z               "line": 207
2026-06-21T07:19:09.7690347Z             },
2026-06-21T07:19:09.7690451Z             {
2026-06-21T07:19:09.7690594Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T07:19:09.7690696Z               "line": 16
2026-06-21T07:19:09.7690796Z             },
2026-06-21T07:19:09.7690892Z             {
2026-06-21T07:19:09.7691044Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T07:19:09.7691154Z               "line": 63
2026-06-21T07:19:09.7691255Z             }
2026-06-21T07:19:09.7691359Z           ]
2026-06-21T07:19:09.7691459Z         },
2026-06-21T07:19:09.7691565Z         "int": {
2026-06-21T07:19:09.7691693Z           "complete": false,
2026-06-21T07:19:09.7691803Z           "evidence": []
2026-06-21T07:19:09.7691898Z         },
2026-06-21T07:19:09.7691993Z         "unit": {
2026-06-21T07:19:09.7692093Z           "complete": true,
2026-06-21T07:19:09.7692209Z           "evidence": [
2026-06-21T07:19:09.7692308Z             {
2026-06-21T07:19:09.7692579Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7692694Z               "line": 584
2026-06-21T07:19:09.7692795Z             },
2026-06-21T07:19:09.7692894Z             {
2026-06-21T07:19:09.7693038Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7693233Z               "line": 594
2026-06-21T07:19:09.7693327Z             },
2026-06-21T07:19:09.7693427Z             {
2026-06-21T07:19:09.7693580Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7693684Z               "line": 616
2026-06-21T07:19:09.7693790Z             },
2026-06-21T07:19:09.7693886Z             {
2026-06-21T07:19:09.7694033Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7694139Z               "line": 632
2026-06-21T07:19:09.7694243Z             },
2026-06-21T07:19:09.7694348Z             {
2026-06-21T07:19:09.7694491Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T07:19:09.7694591Z               "line": 690
2026-06-21T07:19:09.7694696Z             },
2026-06-21T07:19:09.7694801Z             {
2026-06-21T07:19:09.7694939Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7695050Z               "line": 472
2026-06-21T07:19:09.7695154Z             },
2026-06-21T07:19:09.7695249Z             {
2026-06-21T07:19:09.7695403Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T07:19:09.7695511Z               "line": 507
2026-06-21T07:19:09.7695615Z             },
2026-06-21T07:19:09.7695715Z             {
2026-06-21T07:19:09.7695865Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T07:19:09.7695970Z               "line": 120
2026-06-21T07:19:09.7696067Z             },
2026-06-21T07:19:09.7696171Z             {
2026-06-21T07:19:09.7696314Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T07:19:09.7696424Z               "line": 128
2026-06-21T07:19:09.7696523Z             }
2026-06-21T07:19:09.7696629Z           ]
2026-06-21T07:19:09.7696734Z         }
2026-06-21T07:19:09.7696833Z       }
2026-06-21T07:19:09.7696934Z     },
2026-06-21T07:19:09.7697039Z     {
2026-06-21T07:19:09.7697158Z       "id": "REQ-SUBNET-1",
2026-06-21T07:19:09.7697510Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T07:19:09.7697631Z       "requiredStages": [
2026-06-21T07:19:09.7697734Z         "impl",
2026-06-21T07:19:09.7697839Z         "unit"
2026-06-21T07:19:09.7697936Z       ],
2026-06-21T07:19:09.7698044Z       "stages": {
2026-06-21T07:19:09.7698149Z         "doc": {
2026-06-21T07:19:09.7698260Z           "complete": false,
2026-06-21T07:19:09.7698364Z           "evidence": []
2026-06-21T07:19:09.7698468Z         },
2026-06-21T07:19:09.7698573Z         "impl": {
2026-06-21T07:19:09.7698676Z           "complete": true,
2026-06-21T07:19:09.7698780Z           "evidence": [
2026-06-21T07:19:09.7698881Z             {
2026-06-21T07:19:09.7699210Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7699325Z               "line": 281
2026-06-21T07:19:09.7699433Z             },
2026-06-21T07:19:09.7699534Z             {
2026-06-21T07:19:09.7699682Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7699791Z               "line": 651
2026-06-21T07:19:09.7699887Z             },
2026-06-21T07:19:09.7699992Z             {
2026-06-21T07:19:09.7700115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7700231Z               "line": 3399
2026-06-21T07:19:09.7700330Z             },
2026-06-21T07:19:09.7700435Z             {
2026-06-21T07:19:09.7700560Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7700678Z               "line": 3709
2026-06-21T07:19:09.7700784Z             },
2026-06-21T07:19:09.7700884Z             {
2026-06-21T07:19:09.7701016Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7701120Z               "line": 3728
2026-06-21T07:19:09.7701332Z             },
2026-06-21T07:19:09.7701428Z             {
2026-06-21T07:19:09.7701563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7701666Z               "line": 3792
2026-06-21T07:19:09.7701767Z             },
2026-06-21T07:19:09.7701872Z             {
2026-06-21T07:19:09.7702106Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7702225Z               "line": 3834
2026-06-21T07:19:09.7702319Z             },
2026-06-21T07:19:09.7702421Z             {
2026-06-21T07:19:09.7702554Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7702658Z               "line": 4023
2026-06-21T07:19:09.7702765Z             },
2026-06-21T07:19:09.7702864Z             {
2026-06-21T07:19:09.7702992Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7703103Z               "line": 4093
2026-06-21T07:19:09.7703207Z             },
2026-06-21T07:19:09.7703312Z             {
2026-06-21T07:19:09.7703436Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7703555Z               "line": 4317
2026-06-21T07:19:09.7703647Z             },
2026-06-21T07:19:09.7703751Z             {
2026-06-21T07:19:09.7703873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7703992Z               "line": 4961
2026-06-21T07:19:09.7704094Z             },
2026-06-21T07:19:09.7704188Z             {
2026-06-21T07:19:09.7704317Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7704427Z               "line": 418
2026-06-21T07:19:09.7704531Z             }
2026-06-21T07:19:09.7704627Z           ]
2026-06-21T07:19:09.7704737Z         },
2026-06-21T07:19:09.7704846Z         "int": {
2026-06-21T07:19:09.7704951Z           "complete": false,
2026-06-21T07:19:09.7705066Z           "evidence": []
2026-06-21T07:19:09.7705170Z         },
2026-06-21T07:19:09.7705271Z         "unit": {
2026-06-21T07:19:09.7705380Z           "complete": true,
2026-06-21T07:19:09.7705485Z           "evidence": [
2026-06-21T07:19:09.7705586Z             {
2026-06-21T07:19:09.7705737Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7705838Z               "line": 1584
2026-06-21T07:19:09.7705940Z             },
2026-06-21T07:19:09.7706037Z             {
2026-06-21T07:19:09.7706161Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7706280Z               "line": 9964
2026-06-21T07:19:09.7706388Z             },
2026-06-21T07:19:09.7706492Z             {
2026-06-21T07:19:09.7706622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7706726Z               "line": 10134
2026-06-21T07:19:09.7706831Z             },
2026-06-21T07:19:09.7706932Z             {
2026-06-21T07:19:09.7707060Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7707169Z               "line": 10141
2026-06-21T07:19:09.7707270Z             },
2026-06-21T07:19:09.7707384Z             {
2026-06-21T07:19:09.7707504Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7707618Z               "line": 10194
2026-06-21T07:19:09.7707718Z             },
2026-06-21T07:19:09.7707828Z             {
2026-06-21T07:19:09.7707956Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7708066Z               "line": 10211
2026-06-21T07:19:09.7708172Z             },
2026-06-21T07:19:09.7708276Z             {
2026-06-21T07:19:09.7708404Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7708510Z               "line": 10241
2026-06-21T07:19:09.7708619Z             },
2026-06-21T07:19:09.7708724Z             {
2026-06-21T07:19:09.7708844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7709023Z               "line": 10357
2026-06-21T07:19:09.7709119Z             },
2026-06-21T07:19:09.7709218Z             {
2026-06-21T07:19:09.7709340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7709455Z               "line": 10508
2026-06-21T07:19:09.7709565Z             }
2026-06-21T07:19:09.7709664Z           ]
2026-06-21T07:19:09.7709765Z         }
2026-06-21T07:19:09.7709965Z       }
2026-06-21T07:19:09.7710061Z     },
2026-06-21T07:19:09.7710161Z     {
2026-06-21T07:19:09.7710280Z       "id": "REQ-SUBNET-2",
2026-06-21T07:19:09.7710542Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T07:19:09.7710781Z       "requiredStages": [
2026-06-21T07:19:09.7710885Z         "impl",
2026-06-21T07:19:09.7710986Z         "unit",
2026-06-21T07:19:09.7711091Z         "int"
2026-06-21T07:19:09.7711194Z       ],
2026-06-21T07:19:09.7711301Z       "stages": {
2026-06-21T07:19:09.7711406Z         "doc": {
2026-06-21T07:19:09.7711509Z           "complete": true,
2026-06-21T07:19:09.7711623Z           "evidence": [
2026-06-21T07:19:09.7711723Z             {
2026-06-21T07:19:09.7711907Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T07:19:09.7712017Z               "line": 60
2026-06-21T07:19:09.7712109Z             }
2026-06-21T07:19:09.7712207Z           ]
2026-06-21T07:19:09.7712313Z         },
2026-06-21T07:19:09.7712417Z         "impl": {
2026-06-21T07:19:09.7712522Z           "complete": true,
2026-06-21T07:19:09.7712633Z           "evidence": [
2026-06-21T07:19:09.7712732Z             {
2026-06-21T07:19:09.7712879Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.7712995Z               "line": 886
2026-06-21T07:19:09.7713089Z             },
2026-06-21T07:19:09.7713194Z             {
2026-06-21T07:19:09.7713325Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7713434Z               "line": 2082
2026-06-21T07:19:09.7713538Z             },
2026-06-21T07:19:09.7713639Z             {
2026-06-21T07:19:09.7713777Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7713882Z               "line": 683
2026-06-21T07:19:09.7713987Z             },
2026-06-21T07:19:09.7714086Z             {
2026-06-21T07:19:09.7714240Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T07:19:09.7714349Z               "line": 867
2026-06-21T07:19:09.7714453Z             },
2026-06-21T07:19:09.7714557Z             {
2026-06-21T07:19:09.7714691Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7714805Z               "line": 26
2026-06-21T07:19:09.7714901Z             },
2026-06-21T07:19:09.7715002Z             {
2026-06-21T07:19:09.7715158Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7715263Z               "line": 60
2026-06-21T07:19:09.7715368Z             },
2026-06-21T07:19:09.7715463Z             {
2026-06-21T07:19:09.7715606Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7715706Z               "line": 168
2026-06-21T07:19:09.7715812Z             },
2026-06-21T07:19:09.7715917Z             {
2026-06-21T07:19:09.7716054Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7716165Z               "line": 295
2026-06-21T07:19:09.7716260Z             },
2026-06-21T07:19:09.7716364Z             {
2026-06-21T07:19:09.7716514Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7716612Z               "line": 417
2026-06-21T07:19:09.7716721Z             },
2026-06-21T07:19:09.7716821Z             {
2026-06-21T07:19:09.7716976Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T07:19:09.7717081Z               "line": 252
2026-06-21T07:19:09.7717187Z             },
2026-06-21T07:19:09.7717286Z             {
2026-06-21T07:19:09.7717419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7717521Z               "line": 3755
2026-06-21T07:19:09.7717624Z             },
2026-06-21T07:19:09.7717730Z             {
2026-06-21T07:19:09.7717859Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7717968Z               "line": 4256
2026-06-21T07:19:09.7718069Z             },
2026-06-21T07:19:09.7718173Z             {
2026-06-21T07:19:09.7718302Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7718408Z               "line": 4892
2026-06-21T07:19:09.7718602Z             }
2026-06-21T07:19:09.7718703Z           ]
2026-06-21T07:19:09.7718812Z         },
2026-06-21T07:19:09.7718917Z         "int": {
2026-06-21T07:19:09.7719113Z           "complete": true,
2026-06-21T07:19:09.7719227Z           "evidence": [
2026-06-21T07:19:09.7719423Z             {
2026-06-21T07:19:09.7719574Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T07:19:09.7719679Z               "line": 22
2026-06-21T07:19:09.7719787Z             },
2026-06-21T07:19:09.7719886Z             {
2026-06-21T07:19:09.7720034Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7720139Z               "line": 645
2026-06-21T07:19:09.7720238Z             },
2026-06-21T07:19:09.7720345Z             {
2026-06-21T07:19:09.7720482Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7720592Z               "line": 887
2026-06-21T07:19:09.7720698Z             }
2026-06-21T07:19:09.7723797Z           ]
2026-06-21T07:19:09.7723960Z         },
2026-06-21T07:19:09.7724069Z         "unit": {
2026-06-21T07:19:09.7724185Z           "complete": true,
2026-06-21T07:19:09.7724298Z           "evidence": [
2026-06-21T07:19:09.7724389Z             {
2026-06-21T07:19:09.7724552Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7724666Z               "line": 586
2026-06-21T07:19:09.7724767Z             },
2026-06-21T07:19:09.7724867Z             {
2026-06-21T07:19:09.7724998Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7725108Z               "line": 10004
2026-06-21T07:19:09.7725209Z             },
2026-06-21T07:19:09.7725308Z             {
2026-06-21T07:19:09.7725437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7725542Z               "line": 10715
2026-06-21T07:19:09.7725651Z             }
2026-06-21T07:19:09.7725752Z           ]
2026-06-21T07:19:09.7725852Z         }
2026-06-21T07:19:09.7725956Z       }
2026-06-21T07:19:09.7726057Z     },
2026-06-21T07:19:09.7726157Z     {
2026-06-21T07:19:09.7726266Z       "id": "REQ-SUBNET-3",
2026-06-21T07:19:09.7726563Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T07:19:09.7726682Z       "requiredStages": [
2026-06-21T07:19:09.7726787Z         "impl",
2026-06-21T07:19:09.7726896Z         "unit"
2026-06-21T07:19:09.7727001Z       ],
2026-06-21T07:19:09.7727093Z       "stages": {
2026-06-21T07:19:09.7727191Z         "doc": {
2026-06-21T07:19:09.7727295Z           "complete": false,
2026-06-21T07:19:09.7727396Z           "evidence": []
2026-06-21T07:19:09.7727498Z         },
2026-06-21T07:19:09.7727602Z         "impl": {
2026-06-21T07:19:09.7727713Z           "complete": true,
2026-06-21T07:19:09.7727822Z           "evidence": [
2026-06-21T07:19:09.7727922Z             {
2026-06-21T07:19:09.7728071Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7728175Z               "line": 152
2026-06-21T07:19:09.7728280Z             },
2026-06-21T07:19:09.7728386Z             {
2026-06-21T07:19:09.7728542Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7728648Z               "line": 299
2026-06-21T07:19:09.7728753Z             },
2026-06-21T07:19:09.7728847Z             {
2026-06-21T07:19:09.7729096Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7729210Z               "line": 443
2026-06-21T07:19:09.7729307Z             },
2026-06-21T07:19:09.7729419Z             {
2026-06-21T07:19:09.7729578Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7729692Z               "line": 532
2026-06-21T07:19:09.7729792Z             },
2026-06-21T07:19:09.7729893Z             {
2026-06-21T07:19:09.7730044Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7730152Z               "line": 125
2026-06-21T07:19:09.7730258Z             },
2026-06-21T07:19:09.7730361Z             {
2026-06-21T07:19:09.7730666Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7730766Z               "line": 253
2026-06-21T07:19:09.7730861Z             },
2026-06-21T07:19:09.7730962Z             {
2026-06-21T07:19:09.7731113Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7731310Z               "line": 264
2026-06-21T07:19:09.7731409Z             },
2026-06-21T07:19:09.7731510Z             {
2026-06-21T07:19:09.7731648Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7731757Z               "line": 285
2026-06-21T07:19:09.7731859Z             },
2026-06-21T07:19:09.7731963Z             {
2026-06-21T07:19:09.7732106Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7732216Z               "line": 621
2026-06-21T07:19:09.7732320Z             },
2026-06-21T07:19:09.7732416Z             {
2026-06-21T07:19:09.7732564Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7732677Z               "line": 680
2026-06-21T07:19:09.7732767Z             },
2026-06-21T07:19:09.7732863Z             {
2026-06-21T07:19:09.7733012Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.7733113Z               "line": 61
2026-06-21T07:19:09.7733214Z             },
2026-06-21T07:19:09.7733313Z             {
2026-06-21T07:19:09.7733452Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.7733552Z               "line": 90
2026-06-21T07:19:09.7733656Z             },
2026-06-21T07:19:09.7733753Z             {
2026-06-21T07:19:09.7733900Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.7734009Z               "line": 125
2026-06-21T07:19:09.7734106Z             },
2026-06-21T07:19:09.7734200Z             {
2026-06-21T07:19:09.7734339Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T07:19:09.7734449Z               "line": 9
2026-06-21T07:19:09.7734544Z             },
2026-06-21T07:19:09.7734649Z             {
2026-06-21T07:19:09.7734778Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7734887Z               "line": 4093
2026-06-21T07:19:09.7734988Z             },
2026-06-21T07:19:09.7735089Z             {
2026-06-21T07:19:09.7735211Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7735322Z               "line": 445
2026-06-21T07:19:09.7735422Z             }
2026-06-21T07:19:09.7735520Z           ]
2026-06-21T07:19:09.7735611Z         },
2026-06-21T07:19:09.7735711Z         "int": {
2026-06-21T07:19:09.7735817Z           "complete": false,
2026-06-21T07:19:09.7735920Z           "evidence": []
2026-06-21T07:19:09.7736021Z         },
2026-06-21T07:19:09.7736122Z         "unit": {
2026-06-21T07:19:09.7736235Z           "complete": true,
2026-06-21T07:19:09.7736346Z           "evidence": [
2026-06-21T07:19:09.7736446Z             {
2026-06-21T07:19:09.7736603Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7736713Z               "line": 1356
2026-06-21T07:19:09.7736813Z             },
2026-06-21T07:19:09.7736908Z             {
2026-06-21T07:19:09.7737056Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7737165Z               "line": 1713
2026-06-21T07:19:09.7737271Z             },
2026-06-21T07:19:09.7737375Z             {
2026-06-21T07:19:09.7737518Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7737624Z               "line": 892
2026-06-21T07:19:09.7737727Z             },
2026-06-21T07:19:09.7737827Z             {
2026-06-21T07:19:09.7737970Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7738073Z               "line": 991
2026-06-21T07:19:09.7738177Z             },
2026-06-21T07:19:09.7738278Z             {
2026-06-21T07:19:09.7738421Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7738526Z               "line": 1041
2026-06-21T07:19:09.7738626Z             },
2026-06-21T07:19:09.7738730Z             {
2026-06-21T07:19:09.7739045Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7739145Z               "line": 1100
2026-06-21T07:19:09.7739251Z             },
2026-06-21T07:19:09.7739351Z             {
2026-06-21T07:19:09.7739508Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T07:19:09.7739713Z               "line": 234
2026-06-21T07:19:09.7739814Z             },
2026-06-21T07:19:09.7739923Z             {
2026-06-21T07:19:09.7740066Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T07:19:09.7740177Z               "line": 49
2026-06-21T07:19:09.7740266Z             },
2026-06-21T07:19:09.7740366Z             {
2026-06-21T07:19:09.7740496Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7740604Z               "line": 10357
2026-06-21T07:19:09.7740708Z             },
2026-06-21T07:19:09.7740813Z             {
2026-06-21T07:19:09.7740940Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7741044Z               "line": 10463
2026-06-21T07:19:09.7741145Z             },
2026-06-21T07:19:09.7741255Z             {
2026-06-21T07:19:09.7741378Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7741489Z               "line": 10681
2026-06-21T07:19:09.7741588Z             }
2026-06-21T07:19:09.7741692Z           ]
2026-06-21T07:19:09.7741790Z         }
2026-06-21T07:19:09.7741889Z       }
2026-06-21T07:19:09.7741998Z     },
2026-06-21T07:19:09.7742095Z     {
2026-06-21T07:19:09.7742194Z       "id": "REQ-SUBNET-4",
2026-06-21T07:19:09.7742513Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T07:19:09.7742628Z       "requiredStages": [
2026-06-21T07:19:09.7742729Z         "impl",
2026-06-21T07:19:09.7742837Z         "unit"
2026-06-21T07:19:09.7742933Z       ],
2026-06-21T07:19:09.7743034Z       "stages": {
2026-06-21T07:19:09.7743134Z         "doc": {
2026-06-21T07:19:09.7743246Z           "complete": true,
2026-06-21T07:19:09.7743351Z           "evidence": [
2026-06-21T07:19:09.7743446Z             {
2026-06-21T07:19:09.7743635Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T07:19:09.7743741Z               "line": 60
2026-06-21T07:19:09.7743831Z             }
2026-06-21T07:19:09.7743930Z           ]
2026-06-21T07:19:09.7744032Z         },
2026-06-21T07:19:09.7744137Z         "impl": {
2026-06-21T07:19:09.7744250Z           "complete": true,
2026-06-21T07:19:09.7744356Z           "evidence": [
2026-06-21T07:19:09.7744446Z             {
2026-06-21T07:19:09.7744569Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7744675Z               "line": 3399
2026-06-21T07:19:09.7744779Z             },
2026-06-21T07:19:09.7744879Z             {
2026-06-21T07:19:09.7745005Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7745114Z               "line": 4859
2026-06-21T07:19:09.7745218Z             },
2026-06-21T07:19:09.7745314Z             {
2026-06-21T07:19:09.7745447Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7745558Z               "line": 4892
2026-06-21T07:19:09.7745658Z             }
2026-06-21T07:19:09.7745752Z           ]
2026-06-21T07:19:09.7745863Z         },
2026-06-21T07:19:09.7745963Z         "int": {
2026-06-21T07:19:09.7746081Z           "complete": false,
2026-06-21T07:19:09.7746190Z           "evidence": []
2026-06-21T07:19:09.7746291Z         },
2026-06-21T07:19:09.7746386Z         "unit": {
2026-06-21T07:19:09.7746495Z           "complete": true,
2026-06-21T07:19:09.7746601Z           "evidence": [
2026-06-21T07:19:09.7746706Z             {
2026-06-21T07:19:09.7746829Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7746940Z               "line": 10120
2026-06-21T07:19:09.7747030Z             },
2026-06-21T07:19:09.7747124Z             {
2026-06-21T07:19:09.7747249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7747364Z               "line": 10194
2026-06-21T07:19:09.7747468Z             }
2026-06-21T07:19:09.7747663Z           ]
2026-06-21T07:19:09.7747758Z         }
2026-06-21T07:19:09.7747860Z       }
2026-06-21T07:19:09.7747959Z     },
2026-06-21T07:19:09.7748054Z     {
2026-06-21T07:19:09.7748165Z       "id": "REQ-SUBNET-5",
2026-06-21T07:19:09.7749478Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T07:19:09.7749705Z       "requiredStages": [
2026-06-21T07:19:09.7749807Z         "impl",
2026-06-21T07:19:09.7749902Z         "unit",
2026-06-21T07:19:09.7750006Z         "int"
2026-06-21T07:19:09.7750102Z       ],
2026-06-21T07:19:09.7750201Z       "stages": {
2026-06-21T07:19:09.7750306Z         "doc": {
2026-06-21T07:19:09.7750412Z           "complete": false,
2026-06-21T07:19:09.7750530Z           "evidence": []
2026-06-21T07:19:09.7750630Z         },
2026-06-21T07:19:09.7750727Z         "impl": {
2026-06-21T07:19:09.7750835Z           "complete": true,
2026-06-21T07:19:09.7750941Z           "evidence": [
2026-06-21T07:19:09.7751042Z             {
2026-06-21T07:19:09.7751202Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T07:19:09.7751311Z               "line": 128
2026-06-21T07:19:09.7751412Z             },
2026-06-21T07:19:09.7751509Z             {
2026-06-21T07:19:09.7751658Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T07:19:09.7751763Z               "line": 413
2026-06-21T07:19:09.7751871Z             },
2026-06-21T07:19:09.7751957Z             {
2026-06-21T07:19:09.7752101Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7752205Z               "line": 74
2026-06-21T07:19:09.7752311Z             },
2026-06-21T07:19:09.7752416Z             {
2026-06-21T07:19:09.7752553Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.7752664Z               "line": 332
2026-06-21T07:19:09.7752763Z             },
2026-06-21T07:19:09.7752868Z             {
2026-06-21T07:19:09.7753008Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.7753121Z               "line": 621
2026-06-21T07:19:09.7753216Z             },
2026-06-21T07:19:09.7753318Z             {
2026-06-21T07:19:09.7753464Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.7753561Z               "line": 31
2026-06-21T07:19:09.7753665Z             },
2026-06-21T07:19:09.7753764Z             {
2026-06-21T07:19:09.7753916Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.7754020Z               "line": 50
2026-06-21T07:19:09.7754119Z             },
2026-06-21T07:19:09.7754224Z             {
2026-06-21T07:19:09.7754368Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.7754471Z               "line": 69
2026-06-21T07:19:09.7754573Z             },
2026-06-21T07:19:09.7754673Z             {
2026-06-21T07:19:09.7754824Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.7754921Z               "line": 113
2026-06-21T07:19:09.7755025Z             },
2026-06-21T07:19:09.7755124Z             {
2026-06-21T07:19:09.7755273Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T07:19:09.7755378Z               "line": 25
2026-06-21T07:19:09.7755483Z             },
2026-06-21T07:19:09.7755583Z             {
2026-06-21T07:19:09.7755726Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T07:19:09.7755837Z               "line": 34
2026-06-21T07:19:09.7755936Z             },
2026-06-21T07:19:09.7756036Z             {
2026-06-21T07:19:09.7756190Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T07:19:09.7756293Z               "line": 17
2026-06-21T07:19:09.7756394Z             },
2026-06-21T07:19:09.7756491Z             {
2026-06-21T07:19:09.7756716Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7756817Z               "line": 4817
2026-06-21T07:19:09.7756918Z             },
2026-06-21T07:19:09.7757017Z             {
2026-06-21T07:19:09.7757151Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T07:19:09.7757350Z               "line": 419
2026-06-21T07:19:09.7757452Z             }
2026-06-21T07:19:09.7757551Z           ]
2026-06-21T07:19:09.7757651Z         },
2026-06-21T07:19:09.7757757Z         "int": {
2026-06-21T07:19:09.7757866Z           "complete": true,
2026-06-21T07:19:09.7757956Z           "evidence": [
2026-06-21T07:19:09.7758062Z             {
2026-06-21T07:19:09.7758205Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7758314Z               "line": 821
2026-06-21T07:19:09.7758415Z             }
2026-06-21T07:19:09.7758505Z           ]
2026-06-21T07:19:09.7758605Z         },
2026-06-21T07:19:09.7758711Z         "unit": {
2026-06-21T07:19:09.7758820Z           "complete": true,
2026-06-21T07:19:09.7758923Z           "evidence": [
2026-06-21T07:19:09.7759114Z             {
2026-06-21T07:19:09.7759255Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.7759360Z               "line": 341
2026-06-21T07:19:09.7759461Z             },
2026-06-21T07:19:09.7759559Z             {
2026-06-21T07:19:09.7759708Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T07:19:09.7759813Z               "line": 1115
2026-06-21T07:19:09.7759917Z             },
2026-06-21T07:19:09.7760014Z             {
2026-06-21T07:19:09.7760166Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T07:19:09.7760270Z               "line": 151
2026-06-21T07:19:09.7760367Z             },
2026-06-21T07:19:09.7760462Z             {
2026-06-21T07:19:09.7760609Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T07:19:09.7760715Z               "line": 61
2026-06-21T07:19:09.7760810Z             },
2026-06-21T07:19:09.7760910Z             {
2026-06-21T07:19:09.7761058Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T07:19:09.7761167Z               "line": 111
2026-06-21T07:19:09.7761269Z             },
2026-06-21T07:19:09.7761368Z             {
2026-06-21T07:19:09.7761515Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T07:19:09.7761621Z               "line": 138
2026-06-21T07:19:09.7761725Z             },
2026-06-21T07:19:09.7761815Z             {
2026-06-21T07:19:09.7761957Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T07:19:09.7762065Z               "line": 148
2026-06-21T07:19:09.7762160Z             },
2026-06-21T07:19:09.7762256Z             {
2026-06-21T07:19:09.7762385Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7762489Z               "line": 10021
2026-06-21T07:19:09.7762590Z             }
2026-06-21T07:19:09.7762695Z           ]
2026-06-21T07:19:09.7762799Z         }
2026-06-21T07:19:09.7762895Z       }
2026-06-21T07:19:09.7763005Z     },
2026-06-21T07:19:09.7763104Z     {
2026-06-21T07:19:09.7763220Z       "id": "REQ-SUBNET-6",
2026-06-21T07:19:09.7763957Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T07:19:09.7764077Z       "requiredStages": [
2026-06-21T07:19:09.7764179Z         "impl",
2026-06-21T07:19:09.7764282Z         "unit"
2026-06-21T07:19:09.7764386Z       ],
2026-06-21T07:19:09.7764486Z       "stages": {
2026-06-21T07:19:09.7764589Z         "doc": {
2026-06-21T07:19:09.7764708Z           "complete": false,
2026-06-21T07:19:09.7764818Z           "evidence": []
2026-06-21T07:19:09.7764918Z         },
2026-06-21T07:19:09.7765018Z         "impl": {
2026-06-21T07:19:09.7765123Z           "complete": true,
2026-06-21T07:19:09.7765223Z           "evidence": [
2026-06-21T07:19:09.7765423Z             {
2026-06-21T07:19:09.7765576Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7765680Z               "line": 254
2026-06-21T07:19:09.7765787Z             },
2026-06-21T07:19:09.7765890Z             {
2026-06-21T07:19:09.7766019Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7766210Z               "line": 4475
2026-06-21T07:19:09.7766315Z             },
2026-06-21T07:19:09.7766411Z             {
2026-06-21T07:19:09.7766534Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7766648Z               "line": 4492
2026-06-21T07:19:09.7766750Z             },
2026-06-21T07:19:09.7766848Z             {
2026-06-21T07:19:09.7766973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7767079Z               "line": 4545
2026-06-21T07:19:09.7767182Z             },
2026-06-21T07:19:09.7767281Z             {
2026-06-21T07:19:09.7767406Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7767520Z               "line": 4568
2026-06-21T07:19:09.7767625Z             }
2026-06-21T07:19:09.7767731Z           ]
2026-06-21T07:19:09.7767830Z         },
2026-06-21T07:19:09.7767934Z         "int": {
2026-06-21T07:19:09.7768045Z           "complete": false,
2026-06-21T07:19:09.7768150Z           "evidence": []
2026-06-21T07:19:09.7768254Z         },
2026-06-21T07:19:09.7768355Z         "unit": {
2026-06-21T07:19:09.7768469Z           "complete": true,
2026-06-21T07:19:09.7768564Z           "evidence": [
2026-06-21T07:19:09.7768670Z             {
2026-06-21T07:19:09.7768784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7768898Z               "line": 10035
2026-06-21T07:19:09.7769084Z             },
2026-06-21T07:19:09.7769184Z             {
2026-06-21T07:19:09.7769324Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7769446Z               "line": 10068
2026-06-21T07:19:09.7769541Z             },
2026-06-21T07:19:09.7769641Z             {
2026-06-21T07:19:09.7769768Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7769881Z               "line": 10077
2026-06-21T07:19:09.7769983Z             }
2026-06-21T07:19:09.7770082Z           ]
2026-06-21T07:19:09.7770177Z         }
2026-06-21T07:19:09.7770273Z       }
2026-06-21T07:19:09.7770373Z     },
2026-06-21T07:19:09.7770482Z     {
2026-06-21T07:19:09.7770583Z       "id": "REQ-SUBNET-7",
2026-06-21T07:19:09.7772262Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T07:19:09.7772384Z       "requiredStages": [
2026-06-21T07:19:09.7772480Z         "impl",
2026-06-21T07:19:09.7772588Z         "unit"
2026-06-21T07:19:09.7772691Z       ],
2026-06-21T07:19:09.7772792Z       "stages": {
2026-06-21T07:19:09.7772897Z         "doc": {
2026-06-21T07:19:09.7773006Z           "complete": false,
2026-06-21T07:19:09.7773112Z           "evidence": []
2026-06-21T07:19:09.7773212Z         },
2026-06-21T07:19:09.7773311Z         "impl": {
2026-06-21T07:19:09.7773422Z           "complete": true,
2026-06-21T07:19:09.7773531Z           "evidence": [
2026-06-21T07:19:09.7773635Z             {
2026-06-21T07:19:09.7773784Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T07:19:09.7773903Z               "line": 17
2026-06-21T07:19:09.7774003Z             },
2026-06-21T07:19:09.7774109Z             {
2026-06-21T07:19:09.7774261Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7774361Z               "line": 103
2026-06-21T07:19:09.7774467Z             },
2026-06-21T07:19:09.7774565Z             {
2026-06-21T07:19:09.7774833Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T07:19:09.7774927Z               "line": 312
2026-06-21T07:19:09.7775032Z             },
2026-06-21T07:19:09.7775141Z             {
2026-06-21T07:19:09.7775282Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T07:19:09.7775483Z               "line": 131
2026-06-21T07:19:09.7775578Z             },
2026-06-21T07:19:09.7775683Z             {
2026-06-21T07:19:09.7775840Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7775949Z               "line": 160
2026-06-21T07:19:09.7776051Z             },
2026-06-21T07:19:09.7776150Z             {
2026-06-21T07:19:09.7776303Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7776398Z               "line": 447
2026-06-21T07:19:09.7776498Z             },
2026-06-21T07:19:09.7776598Z             {
2026-06-21T07:19:09.7776741Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7776860Z               "line": 670
2026-06-21T07:19:09.7776957Z             },
2026-06-21T07:19:09.7777061Z             {
2026-06-21T07:19:09.7777213Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7777320Z               "line": 710
2026-06-21T07:19:09.7777423Z             },
2026-06-21T07:19:09.7777519Z             {
2026-06-21T07:19:09.7777667Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7777780Z               "line": 766
2026-06-21T07:19:09.7777885Z             },
2026-06-21T07:19:09.7777986Z             {
2026-06-21T07:19:09.7778142Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7778262Z               "line": 136
2026-06-21T07:19:09.7778362Z             },
2026-06-21T07:19:09.7778466Z             {
2026-06-21T07:19:09.7778610Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7778715Z               "line": 139
2026-06-21T07:19:09.7778814Z             }
2026-06-21T07:19:09.7778920Z           ]
2026-06-21T07:19:09.7779100Z         },
2026-06-21T07:19:09.7779197Z         "int": {
2026-06-21T07:19:09.7779325Z           "complete": false,
2026-06-21T07:19:09.7779434Z           "evidence": []
2026-06-21T07:19:09.7779536Z         },
2026-06-21T07:19:09.7779644Z         "unit": {
2026-06-21T07:19:09.7779754Z           "complete": true,
2026-06-21T07:19:09.7779856Z           "evidence": [
2026-06-21T07:19:09.7779963Z             {
2026-06-21T07:19:09.7780115Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T07:19:09.7780220Z               "line": 136
2026-06-21T07:19:09.7780323Z             },
2026-06-21T07:19:09.7780413Z             {
2026-06-21T07:19:09.7780562Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T07:19:09.7780671Z               "line": 156
2026-06-21T07:19:09.7780766Z             },
2026-06-21T07:19:09.7780867Z             {
2026-06-21T07:19:09.7781009Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7781125Z               "line": 987
2026-06-21T07:19:09.7781225Z             },
2026-06-21T07:19:09.7781333Z             {
2026-06-21T07:19:09.7781487Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T07:19:09.7781596Z               "line": 1009
2026-06-21T07:19:09.7781701Z             },
2026-06-21T07:19:09.7781797Z             {
2026-06-21T07:19:09.7781939Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T07:19:09.7782044Z               "line": 1419
2026-06-21T07:19:09.7782150Z             },
2026-06-21T07:19:09.7782254Z             {
2026-06-21T07:19:09.7782394Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T07:19:09.7782507Z               "line": 1036
2026-06-21T07:19:09.7782607Z             }
2026-06-21T07:19:09.7782713Z           ]
2026-06-21T07:19:09.7782812Z         }
2026-06-21T07:19:09.7782906Z       }
2026-06-21T07:19:09.7783011Z     },
2026-06-21T07:19:09.7783111Z     {
2026-06-21T07:19:09.7783333Z       "id": "REQ-SUBNET-8",
2026-06-21T07:19:09.7784458Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T07:19:09.7784669Z       "requiredStages": [
2026-06-21T07:19:09.7784777Z         "impl",
2026-06-21T07:19:09.7784878Z         "unit"
2026-06-21T07:19:09.7784984Z       ],
2026-06-21T07:19:09.7785087Z       "stages": {
2026-06-21T07:19:09.7785197Z         "doc": {
2026-06-21T07:19:09.7785303Z           "complete": false,
2026-06-21T07:19:09.7785407Z           "evidence": []
2026-06-21T07:19:09.7785511Z         },
2026-06-21T07:19:09.7785616Z         "impl": {
2026-06-21T07:19:09.7785729Z           "complete": true,
2026-06-21T07:19:09.7785842Z           "evidence": [
2026-06-21T07:19:09.7785938Z             {
2026-06-21T07:19:09.7786062Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7786171Z               "line": 3835
2026-06-21T07:19:09.7786277Z             },
2026-06-21T07:19:09.7786377Z             {
2026-06-21T07:19:09.7786505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7786611Z               "line": 3864
2026-06-21T07:19:09.7786706Z             },
2026-06-21T07:19:09.7786810Z             {
2026-06-21T07:19:09.7786931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7787044Z               "line": 3881
2026-06-21T07:19:09.7787139Z             },
2026-06-21T07:19:09.7787246Z             {
2026-06-21T07:19:09.7787369Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7787473Z               "line": 3904
2026-06-21T07:19:09.7787570Z             },
2026-06-21T07:19:09.7787678Z             {
2026-06-21T07:19:09.7787803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7787913Z               "line": 4318
2026-06-21T07:19:09.7788012Z             }
2026-06-21T07:19:09.7788113Z           ]
2026-06-21T07:19:09.7788214Z         },
2026-06-21T07:19:09.7788307Z         "int": {
2026-06-21T07:19:09.7788406Z           "complete": false,
2026-06-21T07:19:09.7788522Z           "evidence": []
2026-06-21T07:19:09.7788621Z         },
2026-06-21T07:19:09.7788726Z         "unit": {
2026-06-21T07:19:09.7788827Z           "complete": true,
2026-06-21T07:19:09.7789017Z           "evidence": [
2026-06-21T07:19:09.7789113Z             {
2026-06-21T07:19:09.7789227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7789346Z               "line": 10225
2026-06-21T07:19:09.7789457Z             },
2026-06-21T07:19:09.7789556Z             {
2026-06-21T07:19:09.7789680Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7789786Z               "line": 10241
2026-06-21T07:19:09.7789885Z             }
2026-06-21T07:19:09.7789980Z           ]
2026-06-21T07:19:09.7790091Z         }
2026-06-21T07:19:09.7790190Z       }
2026-06-21T07:19:09.7790295Z     },
2026-06-21T07:19:09.7790396Z     {
2026-06-21T07:19:09.7790500Z       "id": "REQ-TERM-1",
2026-06-21T07:19:09.7790694Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T07:19:09.7790803Z       "requiredStages": [
2026-06-21T07:19:09.7790912Z         "impl",
2026-06-21T07:19:09.7791016Z         "unit"
2026-06-21T07:19:09.7791108Z       ],
2026-06-21T07:19:09.7791202Z       "stages": {
2026-06-21T07:19:09.7791312Z         "doc": {
2026-06-21T07:19:09.7791422Z           "complete": false,
2026-06-21T07:19:09.7791527Z           "evidence": []
2026-06-21T07:19:09.7791636Z         },
2026-06-21T07:19:09.7791742Z         "impl": {
2026-06-21T07:19:09.7791850Z           "complete": true,
2026-06-21T07:19:09.7791956Z           "evidence": [
2026-06-21T07:19:09.7792061Z             {
2026-06-21T07:19:09.7792189Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.7792309Z               "line": 59
2026-06-21T07:19:09.7792528Z             },
2026-06-21T07:19:09.7792624Z             {
2026-06-21T07:19:09.7792757Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T07:19:09.7792857Z               "line": 234
2026-06-21T07:19:09.7792963Z             },
2026-06-21T07:19:09.7793158Z             {
2026-06-21T07:19:09.7793302Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T07:19:09.7793410Z               "line": 100
2026-06-21T07:19:09.7793509Z             }
2026-06-21T07:19:09.7793614Z           ]
2026-06-21T07:19:09.7793717Z         },
2026-06-21T07:19:09.7793821Z         "int": {
2026-06-21T07:19:09.7793932Z           "complete": false,
2026-06-21T07:19:09.7794046Z           "evidence": []
2026-06-21T07:19:09.7794145Z         },
2026-06-21T07:19:09.7794242Z         "unit": {
2026-06-21T07:19:09.7794356Z           "complete": true,
2026-06-21T07:19:09.7794464Z           "evidence": [
2026-06-21T07:19:09.7794571Z             {
2026-06-21T07:19:09.7794718Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T07:19:09.7794813Z               "line": 24
2026-06-21T07:19:09.7794919Z             },
2026-06-21T07:19:09.7795018Z             {
2026-06-21T07:19:09.7795152Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T07:19:09.7795262Z               "line": 56
2026-06-21T07:19:09.7795361Z             }
2026-06-21T07:19:09.7795457Z           ]
2026-06-21T07:19:09.7795553Z         }
2026-06-21T07:19:09.7795652Z       }
2026-06-21T07:19:09.7795752Z     },
2026-06-21T07:19:09.7795854Z     {
2026-06-21T07:19:09.7795967Z       "id": "REQ-TERM-2",
2026-06-21T07:19:09.7796176Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T07:19:09.7796289Z       "requiredStages": [
2026-06-21T07:19:09.7796393Z         "impl",
2026-06-21T07:19:09.7796493Z         "unit"
2026-06-21T07:19:09.7796595Z       ],
2026-06-21T07:19:09.7796698Z       "stages": {
2026-06-21T07:19:09.7796799Z         "doc": {
2026-06-21T07:19:09.7796908Z           "complete": false,
2026-06-21T07:19:09.7797012Z           "evidence": []
2026-06-21T07:19:09.7797118Z         },
2026-06-21T07:19:09.7797227Z         "impl": {
2026-06-21T07:19:09.7797336Z           "complete": true,
2026-06-21T07:19:09.7797447Z           "evidence": [
2026-06-21T07:19:09.7797552Z             {
2026-06-21T07:19:09.7797690Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T07:19:09.7797796Z               "line": 117
2026-06-21T07:19:09.7797900Z             },
2026-06-21T07:19:09.7798000Z             {
2026-06-21T07:19:09.7798130Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T07:19:09.7798238Z               "line": 127
2026-06-21T07:19:09.7798339Z             }
2026-06-21T07:19:09.7798440Z           ]
2026-06-21T07:19:09.7798538Z         },
2026-06-21T07:19:09.7798649Z         "int": {
2026-06-21T07:19:09.7798769Z           "complete": false,
2026-06-21T07:19:09.7798872Z           "evidence": []
2026-06-21T07:19:09.7799062Z         },
2026-06-21T07:19:09.7799159Z         "unit": {
2026-06-21T07:19:09.7799277Z           "complete": true,
2026-06-21T07:19:09.7799397Z           "evidence": [
2026-06-21T07:19:09.7799506Z             {
2026-06-21T07:19:09.7799654Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T07:19:09.7799759Z               "line": 46
2026-06-21T07:19:09.7799867Z             },
2026-06-21T07:19:09.7799968Z             {
2026-06-21T07:19:09.7800116Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T07:19:09.7800225Z               "line": 77
2026-06-21T07:19:09.7800332Z             }
2026-06-21T07:19:09.7800426Z           ]
2026-06-21T07:19:09.7800526Z         }
2026-06-21T07:19:09.7800627Z       }
2026-06-21T07:19:09.7800727Z     },
2026-06-21T07:19:09.7800826Z     {
2026-06-21T07:19:09.7800932Z       "id": "REQ-TERM-3",
2026-06-21T07:19:09.7801102Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T07:19:09.7801221Z       "requiredStages": [
2026-06-21T07:19:09.7801429Z         "impl",
2026-06-21T07:19:09.7801538Z         "unit"
2026-06-21T07:19:09.7801634Z       ],
2026-06-21T07:19:09.7801743Z       "stages": {
2026-06-21T07:19:09.7801848Z         "doc": {
2026-06-21T07:19:09.7801959Z           "complete": false,
2026-06-21T07:19:09.7802068Z           "evidence": []
2026-06-21T07:19:09.7802260Z         },
2026-06-21T07:19:09.7805207Z         "impl": {
2026-06-21T07:19:09.7805358Z           "complete": true,
2026-06-21T07:19:09.7805470Z           "evidence": [
2026-06-21T07:19:09.7805574Z             {
2026-06-21T07:19:09.7805722Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T07:19:09.7805827Z               "line": 71
2026-06-21T07:19:09.7805926Z             }
2026-06-21T07:19:09.7806027Z           ]
2026-06-21T07:19:09.7806132Z         },
2026-06-21T07:19:09.7806236Z         "int": {
2026-06-21T07:19:09.7806347Z           "complete": false,
2026-06-21T07:19:09.7806461Z           "evidence": []
2026-06-21T07:19:09.7806565Z         },
2026-06-21T07:19:09.7806678Z         "unit": {
2026-06-21T07:19:09.7806793Z           "complete": true,
2026-06-21T07:19:09.7806887Z           "evidence": [
2026-06-21T07:19:09.7806991Z             {
2026-06-21T07:19:09.7807140Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T07:19:09.7807248Z               "line": 37
2026-06-21T07:19:09.7807354Z             },
2026-06-21T07:19:09.7807454Z             {
2026-06-21T07:19:09.7807596Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T07:19:09.7807702Z               "line": 67
2026-06-21T07:19:09.7807802Z             }
2026-06-21T07:19:09.7807906Z           ]
2026-06-21T07:19:09.7808008Z         }
2026-06-21T07:19:09.7808112Z       }
2026-06-21T07:19:09.7808198Z     },
2026-06-21T07:19:09.7808293Z     {
2026-06-21T07:19:09.7808403Z       "id": "REQ-TERM-4",
2026-06-21T07:19:09.7808928Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T07:19:09.7809132Z       "requiredStages": [
2026-06-21T07:19:09.7809243Z         "impl",
2026-06-21T07:19:09.7809348Z         "unit",
2026-06-21T07:19:09.7809455Z         "int"
2026-06-21T07:19:09.7809550Z       ],
2026-06-21T07:19:09.7809652Z       "stages": {
2026-06-21T07:19:09.7809766Z         "doc": {
2026-06-21T07:19:09.7809874Z           "complete": false,
2026-06-21T07:19:09.7809986Z           "evidence": []
2026-06-21T07:19:09.7810090Z         },
2026-06-21T07:19:09.7810189Z         "impl": {
2026-06-21T07:19:09.7810310Z           "complete": true,
2026-06-21T07:19:09.7810419Z           "evidence": [
2026-06-21T07:19:09.7810519Z             {
2026-06-21T07:19:09.7810681Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7810780Z               "line": 37
2026-06-21T07:19:09.7810887Z             },
2026-06-21T07:19:09.7810991Z             {
2026-06-21T07:19:09.7811148Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7811245Z               "line": 25
2026-06-21T07:19:09.7811353Z             },
2026-06-21T07:19:09.7811454Z             {
2026-06-21T07:19:09.7811602Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7811696Z               "line": 114
2026-06-21T07:19:09.7811800Z             },
2026-06-21T07:19:09.7811905Z             {
2026-06-21T07:19:09.7812051Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7812165Z               "line": 267
2026-06-21T07:19:09.7812267Z             },
2026-06-21T07:19:09.7812360Z             {
2026-06-21T07:19:09.7812499Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7812605Z               "line": 289
2026-06-21T07:19:09.7812704Z             },
2026-06-21T07:19:09.7812805Z             {
2026-06-21T07:19:09.7812961Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7813066Z               "line": 307
2026-06-21T07:19:09.7813168Z             },
2026-06-21T07:19:09.7813405Z             {
2026-06-21T07:19:09.7813553Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.7813658Z               "line": 33
2026-06-21T07:19:09.7813759Z             },
2026-06-21T07:19:09.7813862Z             {
2026-06-21T07:19:09.7814020Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7814220Z               "line": 52
2026-06-21T07:19:09.7814330Z             },
2026-06-21T07:19:09.7814432Z             {
2026-06-21T07:19:09.7814582Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7814691Z               "line": 180
2026-06-21T07:19:09.7814786Z             },
2026-06-21T07:19:09.7814889Z             {
2026-06-21T07:19:09.7815032Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7815143Z               "line": 190
2026-06-21T07:19:09.7815242Z             },
2026-06-21T07:19:09.7815338Z             {
2026-06-21T07:19:09.7815477Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7815581Z               "line": 250
2026-06-21T07:19:09.7815682Z             },
2026-06-21T07:19:09.7815781Z             {
2026-06-21T07:19:09.7815923Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7816030Z               "line": 284
2026-06-21T07:19:09.7816139Z             },
2026-06-21T07:19:09.7816238Z             {
2026-06-21T07:19:09.7816373Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7816486Z               "line": 295
2026-06-21T07:19:09.7816587Z             },
2026-06-21T07:19:09.7816688Z             {
2026-06-21T07:19:09.7816815Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7816931Z               "line": 1193
2026-06-21T07:19:09.7817036Z             }
2026-06-21T07:19:09.7817135Z           ]
2026-06-21T07:19:09.7817234Z         },
2026-06-21T07:19:09.7817325Z         "int": {
2026-06-21T07:19:09.7817437Z           "complete": true,
2026-06-21T07:19:09.7817532Z           "evidence": [
2026-06-21T07:19:09.7817637Z             {
2026-06-21T07:19:09.7817785Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T07:19:09.7817899Z               "line": 18
2026-06-21T07:19:09.7817996Z             }
2026-06-21T07:19:09.7818095Z           ]
2026-06-21T07:19:09.7818190Z         },
2026-06-21T07:19:09.7818300Z         "unit": {
2026-06-21T07:19:09.7818410Z           "complete": true,
2026-06-21T07:19:09.7818520Z           "evidence": [
2026-06-21T07:19:09.7818611Z             {
2026-06-21T07:19:09.7818758Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7818863Z               "line": 364
2026-06-21T07:19:09.7819063Z             },
2026-06-21T07:19:09.7819159Z             {
2026-06-21T07:19:09.7819311Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7819435Z               "line": 416
2026-06-21T07:19:09.7819527Z             },
2026-06-21T07:19:09.7819630Z             {
2026-06-21T07:19:09.7819759Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7819870Z               "line": 426
2026-06-21T07:19:09.7819973Z             },
2026-06-21T07:19:09.7820077Z             {
2026-06-21T07:19:09.7820231Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7820335Z               "line": 436
2026-06-21T07:19:09.7820439Z             },
2026-06-21T07:19:09.7820541Z             {
2026-06-21T07:19:09.7820692Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7820798Z               "line": 456
2026-06-21T07:19:09.7820907Z             },
2026-06-21T07:19:09.7821007Z             {
2026-06-21T07:19:09.7821151Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7821260Z               "line": 478
2026-06-21T07:19:09.7821360Z             },
2026-06-21T07:19:09.7821466Z             {
2026-06-21T07:19:09.7821604Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7821718Z               "line": 491
2026-06-21T07:19:09.7821913Z             },
2026-06-21T07:19:09.7822014Z             {
2026-06-21T07:19:09.7822157Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T07:19:09.7822260Z               "line": 502
2026-06-21T07:19:09.7822360Z             },
2026-06-21T07:19:09.7822461Z             {
2026-06-21T07:19:09.7822697Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.7822807Z               "line": 108
2026-06-21T07:19:09.7822906Z             },
2026-06-21T07:19:09.7823011Z             {
2026-06-21T07:19:09.7823150Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T07:19:09.7823259Z               "line": 119
2026-06-21T07:19:09.7823360Z             },
2026-06-21T07:19:09.7823455Z             {
2026-06-21T07:19:09.7823598Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T07:19:09.7823704Z               "line": 127
2026-06-21T07:19:09.7823808Z             },
2026-06-21T07:19:09.7823903Z             {
2026-06-21T07:19:09.7824052Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7824161Z               "line": 474
2026-06-21T07:19:09.7824270Z             },
2026-06-21T07:19:09.7824372Z             {
2026-06-21T07:19:09.7824518Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7824620Z               "line": 501
2026-06-21T07:19:09.7824724Z             },
2026-06-21T07:19:09.7824828Z             {
2026-06-21T07:19:09.7824958Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7825062Z               "line": 520
2026-06-21T07:19:09.7825166Z             },
2026-06-21T07:19:09.7825266Z             {
2026-06-21T07:19:09.7825412Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7825516Z               "line": 535
2026-06-21T07:19:09.7825621Z             },
2026-06-21T07:19:09.7825722Z             {
2026-06-21T07:19:09.7825859Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7825965Z               "line": 561
2026-06-21T07:19:09.7826074Z             },
2026-06-21T07:19:09.7826178Z             {
2026-06-21T07:19:09.7826313Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7826417Z               "line": 581
2026-06-21T07:19:09.7826523Z             },
2026-06-21T07:19:09.7826623Z             {
2026-06-21T07:19:09.7826765Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7826871Z               "line": 591
2026-06-21T07:19:09.7826975Z             },
2026-06-21T07:19:09.7827070Z             {
2026-06-21T07:19:09.7827215Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7827314Z               "line": 683
2026-06-21T07:19:09.7827409Z             },
2026-06-21T07:19:09.7827515Z             {
2026-06-21T07:19:09.7827657Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7827765Z               "line": 885
2026-06-21T07:19:09.7827866Z             },
2026-06-21T07:19:09.7827955Z             {
2026-06-21T07:19:09.7828082Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7828188Z               "line": 9792
2026-06-21T07:19:09.7828289Z             }
2026-06-21T07:19:09.7828378Z           ]
2026-06-21T07:19:09.7828489Z         }
2026-06-21T07:19:09.7828575Z       }
2026-06-21T07:19:09.7828679Z     },
2026-06-21T07:19:09.7828784Z     {
2026-06-21T07:19:09.7828889Z       "id": "REQ-TERM-5",
2026-06-21T07:19:09.7830661Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T07:19:09.7830896Z       "requiredStages": [
2026-06-21T07:19:09.7831000Z         "doc",
2026-06-21T07:19:09.7831106Z         "impl",
2026-06-21T07:19:09.7831201Z         "unit",
2026-06-21T07:19:09.7831305Z         "int"
2026-06-21T07:19:09.7831401Z       ],
2026-06-21T07:19:09.7831506Z       "stages": {
2026-06-21T07:19:09.7831706Z         "doc": {
2026-06-21T07:19:09.7831810Z           "complete": true,
2026-06-21T07:19:09.7831915Z           "evidence": [
2026-06-21T07:19:09.7832017Z             {
2026-06-21T07:19:09.7832149Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.7832254Z               "line": 234
2026-06-21T07:19:09.7832360Z             }
2026-06-21T07:19:09.7832454Z           ]
2026-06-21T07:19:09.7832554Z         },
2026-06-21T07:19:09.7832651Z         "impl": {
2026-06-21T07:19:09.7832759Z           "complete": true,
2026-06-21T07:19:09.7832868Z           "evidence": [
2026-06-21T07:19:09.7832959Z             {
2026-06-21T07:19:09.7833110Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7833214Z               "line": 75
2026-06-21T07:19:09.7833319Z             },
2026-06-21T07:19:09.7833419Z             {
2026-06-21T07:19:09.7833562Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7833672Z               "line": 131
2026-06-21T07:19:09.7833767Z             },
2026-06-21T07:19:09.7833872Z             {
2026-06-21T07:19:09.7834015Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7834119Z               "line": 22
2026-06-21T07:19:09.7834226Z             },
2026-06-21T07:19:09.7834321Z             {
2026-06-21T07:19:09.7834458Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7834559Z               "line": 87
2026-06-21T07:19:09.7834664Z             },
2026-06-21T07:19:09.7834768Z             {
2026-06-21T07:19:09.7834903Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T07:19:09.7835011Z               "line": 30
2026-06-21T07:19:09.7835107Z             },
2026-06-21T07:19:09.7835213Z             {
2026-06-21T07:19:09.7835359Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7835465Z               "line": 103
2026-06-21T07:19:09.7835566Z             },
2026-06-21T07:19:09.7835664Z             {
2026-06-21T07:19:09.7835807Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7835926Z               "line": 167
2026-06-21T07:19:09.7836029Z             },
2026-06-21T07:19:09.7836129Z             {
2026-06-21T07:19:09.7836278Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7836391Z               "line": 434
2026-06-21T07:19:09.7836487Z             },
2026-06-21T07:19:09.7836587Z             {
2026-06-21T07:19:09.7836715Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7836826Z               "line": 5650
2026-06-21T07:19:09.7836911Z             },
2026-06-21T07:19:09.7837015Z             {
2026-06-21T07:19:09.7837141Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7837240Z               "line": 5957
2026-06-21T07:19:09.7837345Z             }
2026-06-21T07:19:09.7837441Z           ]
2026-06-21T07:19:09.7837540Z         },
2026-06-21T07:19:09.7837645Z         "int": {
2026-06-21T07:19:09.7837756Z           "complete": true,
2026-06-21T07:19:09.7837869Z           "evidence": [
2026-06-21T07:19:09.7837965Z             {
2026-06-21T07:19:09.7838147Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T07:19:09.7838250Z               "line": 17
2026-06-21T07:19:09.7838344Z             }
2026-06-21T07:19:09.7838445Z           ]
2026-06-21T07:19:09.7838548Z         },
2026-06-21T07:19:09.7838647Z         "unit": {
2026-06-21T07:19:09.7838758Z           "complete": true,
2026-06-21T07:19:09.7838872Z           "evidence": [
2026-06-21T07:19:09.7839054Z             {
2026-06-21T07:19:09.7839201Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7839305Z               "line": 375
2026-06-21T07:19:09.7839573Z             },
2026-06-21T07:19:09.7839674Z             {
2026-06-21T07:19:09.7839802Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7839907Z               "line": 162
2026-06-21T07:19:09.7840008Z             },
2026-06-21T07:19:09.7840112Z             {
2026-06-21T07:19:09.7840342Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7840450Z               "line": 179
2026-06-21T07:19:09.7840555Z             },
2026-06-21T07:19:09.7840657Z             {
2026-06-21T07:19:09.7840793Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7840899Z               "line": 201
2026-06-21T07:19:09.7841000Z             },
2026-06-21T07:19:09.7841103Z             {
2026-06-21T07:19:09.7841231Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7841327Z               "line": 212
2026-06-21T07:19:09.7841427Z             },
2026-06-21T07:19:09.7841536Z             {
2026-06-21T07:19:09.7841666Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T07:19:09.7841770Z               "line": 223
2026-06-21T07:19:09.7841875Z             },
2026-06-21T07:19:09.7841976Z             {
2026-06-21T07:19:09.7842113Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7842218Z               "line": 1525
2026-06-21T07:19:09.7842328Z             },
2026-06-21T07:19:09.7842423Z             {
2026-06-21T07:19:09.7842572Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7842676Z               "line": 1568
2026-06-21T07:19:09.7842781Z             },
2026-06-21T07:19:09.7842878Z             {
2026-06-21T07:19:09.7843019Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7843119Z               "line": 606
2026-06-21T07:19:09.7843216Z             },
2026-06-21T07:19:09.7843319Z             {
2026-06-21T07:19:09.7843466Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7843571Z               "line": 634
2026-06-21T07:19:09.7843684Z             },
2026-06-21T07:19:09.7843783Z             {
2026-06-21T07:19:09.7843927Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7844027Z               "line": 646
2026-06-21T07:19:09.7844127Z             },
2026-06-21T07:19:09.7844223Z             {
2026-06-21T07:19:09.7844370Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7844481Z               "line": 669
2026-06-21T07:19:09.7844580Z             },
2026-06-21T07:19:09.7844684Z             {
2026-06-21T07:19:09.7844810Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7844918Z               "line": 8503
2026-06-21T07:19:09.7845023Z             },
2026-06-21T07:19:09.7845120Z             {
2026-06-21T07:19:09.7845238Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7845342Z               "line": 8561
2026-06-21T07:19:09.7845444Z             }
2026-06-21T07:19:09.7845543Z           ]
2026-06-21T07:19:09.7845648Z         }
2026-06-21T07:19:09.7845754Z       }
2026-06-21T07:19:09.7845844Z     },
2026-06-21T07:19:09.7845949Z     {
2026-06-21T07:19:09.7846054Z       "id": "REQ-TERM-6",
2026-06-21T07:19:09.7847285Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T07:19:09.7847405Z       "requiredStages": [
2026-06-21T07:19:09.7847496Z         "impl",
2026-06-21T07:19:09.7847604Z         "unit",
2026-06-21T07:19:09.7847701Z         "int"
2026-06-21T07:19:09.7847804Z       ],
2026-06-21T07:19:09.7847909Z       "stages": {
2026-06-21T07:19:09.7848006Z         "doc": {
2026-06-21T07:19:09.7848114Z           "complete": false,
2026-06-21T07:19:09.7848224Z           "evidence": []
2026-06-21T07:19:09.7848425Z         },
2026-06-21T07:19:09.7848529Z         "impl": {
2026-06-21T07:19:09.7848650Z           "complete": true,
2026-06-21T07:19:09.7848758Z           "evidence": [
2026-06-21T07:19:09.7848862Z             {
2026-06-21T07:19:09.7849099Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7849294Z               "line": 132
2026-06-21T07:19:09.7849414Z             },
2026-06-21T07:19:09.7849513Z             {
2026-06-21T07:19:09.7849657Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7849770Z               "line": 187
2026-06-21T07:19:09.7849861Z             },
2026-06-21T07:19:09.7849967Z             {
2026-06-21T07:19:09.7850109Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7850215Z               "line": 17
2026-06-21T07:19:09.7850314Z             },
2026-06-21T07:19:09.7850414Z             {
2026-06-21T07:19:09.7850563Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7850676Z               "line": 104
2026-06-21T07:19:09.7850777Z             },
2026-06-21T07:19:09.7850878Z             {
2026-06-21T07:19:09.7851024Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7851134Z               "line": 319
2026-06-21T07:19:09.7851241Z             },
2026-06-21T07:19:09.7851344Z             {
2026-06-21T07:19:09.7851489Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7851602Z               "line": 396
2026-06-21T07:19:09.7851701Z             }
2026-06-21T07:19:09.7851801Z           ]
2026-06-21T07:19:09.7851897Z         },
2026-06-21T07:19:09.7852001Z         "int": {
2026-06-21T07:19:09.7852120Z           "complete": true,
2026-06-21T07:19:09.7852226Z           "evidence": [
2026-06-21T07:19:09.7852330Z             {
2026-06-21T07:19:09.7852503Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T07:19:09.7852612Z               "line": 18
2026-06-21T07:19:09.7852716Z             }
2026-06-21T07:19:09.7852813Z           ]
2026-06-21T07:19:09.7852917Z         },
2026-06-21T07:19:09.7853021Z         "unit": {
2026-06-21T07:19:09.7853142Z           "complete": true,
2026-06-21T07:19:09.7853246Z           "evidence": [
2026-06-21T07:19:09.7853351Z             {
2026-06-21T07:19:09.7853499Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7853603Z               "line": 135
2026-06-21T07:19:09.7853708Z             },
2026-06-21T07:19:09.7853814Z             {
2026-06-21T07:19:09.7853964Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7854069Z               "line": 150
2026-06-21T07:19:09.7854164Z             },
2026-06-21T07:19:09.7854272Z             {
2026-06-21T07:19:09.7854411Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7854517Z               "line": 166
2026-06-21T07:19:09.7854615Z             },
2026-06-21T07:19:09.7854706Z             {
2026-06-21T07:19:09.7854840Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T07:19:09.7854949Z               "line": 257
2026-06-21T07:19:09.7855055Z             },
2026-06-21T07:19:09.7855155Z             {
2026-06-21T07:19:09.7855302Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7855413Z               "line": 738
2026-06-21T07:19:09.7855517Z             },
2026-06-21T07:19:09.7855617Z             {
2026-06-21T07:19:09.7855770Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7855879Z               "line": 759
2026-06-21T07:19:09.7855975Z             },
2026-06-21T07:19:09.7856075Z             {
2026-06-21T07:19:09.7856213Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T07:19:09.7856324Z               "line": 726
2026-06-21T07:19:09.7856423Z             }
2026-06-21T07:19:09.7856528Z           ]
2026-06-21T07:19:09.7856634Z         }
2026-06-21T07:19:09.7856729Z       }
2026-06-21T07:19:09.7856827Z     },
2026-06-21T07:19:09.7856927Z     {
2026-06-21T07:19:09.7857149Z       "id": "REQ-TERM-7",
2026-06-21T07:19:09.7858379Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T07:19:09.7858604Z       "requiredStages": [
2026-06-21T07:19:09.7858712Z         "impl",
2026-06-21T07:19:09.7858813Z         "unit",
2026-06-21T07:19:09.7858919Z         "int"
2026-06-21T07:19:09.7859109Z       ],
2026-06-21T07:19:09.7859215Z       "stages": {
2026-06-21T07:19:09.7859328Z         "doc": {
2026-06-21T07:19:09.7859455Z           "complete": false,
2026-06-21T07:19:09.7859556Z           "evidence": []
2026-06-21T07:19:09.7859650Z         },
2026-06-21T07:19:09.7859754Z         "impl": {
2026-06-21T07:19:09.7859859Z           "complete": true,
2026-06-21T07:19:09.7859969Z           "evidence": [
2026-06-21T07:19:09.7860073Z             {
2026-06-21T07:19:09.7860217Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7860321Z               "line": 133
2026-06-21T07:19:09.7860426Z             },
2026-06-21T07:19:09.7860532Z             {
2026-06-21T07:19:09.7860673Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7860775Z               "line": 326
2026-06-21T07:19:09.7860870Z             },
2026-06-21T07:19:09.7860970Z             {
2026-06-21T07:19:09.7861113Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T07:19:09.7861218Z               "line": 15
2026-06-21T07:19:09.7861322Z             },
2026-06-21T07:19:09.7861428Z             {
2026-06-21T07:19:09.7861556Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T07:19:09.7861666Z               "line": 32
2026-06-21T07:19:09.7861772Z             },
2026-06-21T07:19:09.7861875Z             {
2026-06-21T07:19:09.7862005Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.7862111Z               "line": 49
2026-06-21T07:19:09.7862218Z             },
2026-06-21T07:19:09.7862318Z             {
2026-06-21T07:19:09.7862471Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7862571Z               "line": 286
2026-06-21T07:19:09.7862680Z             },
2026-06-21T07:19:09.7862776Z             {
2026-06-21T07:19:09.7862923Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7863029Z               "line": 320
2026-06-21T07:19:09.7863134Z             }
2026-06-21T07:19:09.7863243Z           ]
2026-06-21T07:19:09.7863339Z         },
2026-06-21T07:19:09.7863444Z         "int": {
2026-06-21T07:19:09.7863557Z           "complete": true,
2026-06-21T07:19:09.7863663Z           "evidence": [
2026-06-21T07:19:09.7863763Z             {
2026-06-21T07:19:09.7863930Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T07:19:09.7864045Z               "line": 19
2026-06-21T07:19:09.7864134Z             }
2026-06-21T07:19:09.7864240Z           ]
2026-06-21T07:19:09.7864342Z         },
2026-06-21T07:19:09.7864449Z         "unit": {
2026-06-21T07:19:09.7864553Z           "complete": true,
2026-06-21T07:19:09.7864668Z           "evidence": [
2026-06-21T07:19:09.7864771Z             {
2026-06-21T07:19:09.7864908Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7865024Z               "line": 455
2026-06-21T07:19:09.7865128Z             },
2026-06-21T07:19:09.7865223Z             {
2026-06-21T07:19:09.7865367Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T07:19:09.7865466Z               "line": 568
2026-06-21T07:19:09.7865572Z             },
2026-06-21T07:19:09.7865672Z             {
2026-06-21T07:19:09.7865800Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T07:19:09.7865906Z               "line": 58
2026-06-21T07:19:09.7866115Z             },
2026-06-21T07:19:09.7866225Z             {
2026-06-21T07:19:09.7866354Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T07:19:09.7866472Z               "line": 77
2026-06-21T07:19:09.7866565Z             },
2026-06-21T07:19:09.7866663Z             {
2026-06-21T07:19:09.7866894Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T07:19:09.7867006Z               "line": 87
2026-06-21T07:19:09.7867112Z             },
2026-06-21T07:19:09.7867213Z             {
2026-06-21T07:19:09.7867340Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T07:19:09.7867444Z               "line": 94
2026-06-21T07:19:09.7867549Z             },
2026-06-21T07:19:09.7867648Z             {
2026-06-21T07:19:09.7867790Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7867896Z               "line": 691
2026-06-21T07:19:09.7867995Z             },
2026-06-21T07:19:09.7868090Z             {
2026-06-21T07:19:09.7868235Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T07:19:09.7868353Z               "line": 716
2026-06-21T07:19:09.7868443Z             }
2026-06-21T07:19:09.7868544Z           ]
2026-06-21T07:19:09.7868653Z         }
2026-06-21T07:19:09.7868754Z       }
2026-06-21T07:19:09.7868849Z     },
2026-06-21T07:19:09.7869039Z     {
2026-06-21T07:19:09.7869150Z       "id": "REQ-UPD-1",
2026-06-21T07:19:09.7869297Z       "title": "Peer-propagated update over P2P",
2026-06-21T07:19:09.7869422Z       "requiredStages": [
2026-06-21T07:19:09.7869531Z         "impl",
2026-06-21T07:19:09.7869631Z         "unit",
2026-06-21T07:19:09.7869737Z         "int"
2026-06-21T07:19:09.7869837Z       ],
2026-06-21T07:19:09.7869939Z       "stages": {
2026-06-21T07:19:09.7870039Z         "doc": {
2026-06-21T07:19:09.7870154Z           "complete": false,
2026-06-21T07:19:09.7870266Z           "evidence": []
2026-06-21T07:19:09.7870361Z         },
2026-06-21T07:19:09.7870467Z         "impl": {
2026-06-21T07:19:09.7870581Z           "complete": true,
2026-06-21T07:19:09.7870690Z           "evidence": [
2026-06-21T07:19:09.7870796Z             {
2026-06-21T07:19:09.7870943Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7871049Z               "line": 28
2026-06-21T07:19:09.7871148Z             },
2026-06-21T07:19:09.7871253Z             {
2026-06-21T07:19:09.7871397Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7871511Z               "line": 103
2026-06-21T07:19:09.7871606Z             },
2026-06-21T07:19:09.7871703Z             {
2026-06-21T07:19:09.7871845Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7871959Z               "line": 342
2026-06-21T07:19:09.7872060Z             },
2026-06-21T07:19:09.7872149Z             {
2026-06-21T07:19:09.7872304Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7872408Z               "line": 22
2026-06-21T07:19:09.7872517Z             },
2026-06-21T07:19:09.7872623Z             {
2026-06-21T07:19:09.7872765Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7872873Z               "line": 207
2026-06-21T07:19:09.7872979Z             },
2026-06-21T07:19:09.7873075Z             {
2026-06-21T07:19:09.7873216Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7873318Z               "line": 283
2026-06-21T07:19:09.7873422Z             },
2026-06-21T07:19:09.7873522Z             {
2026-06-21T07:19:09.7873670Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7873779Z               "line": 340
2026-06-21T07:19:09.7873880Z             },
2026-06-21T07:19:09.7873985Z             {
2026-06-21T07:19:09.7874127Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7874233Z               "line": 37
2026-06-21T07:19:09.7874333Z             }
2026-06-21T07:19:09.7874437Z           ]
2026-06-21T07:19:09.7874529Z         },
2026-06-21T07:19:09.7874638Z         "int": {
2026-06-21T07:19:09.7874863Z           "complete": true,
2026-06-21T07:19:09.7874967Z           "evidence": [
2026-06-21T07:19:09.7875076Z             {
2026-06-21T07:19:09.7875233Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T07:19:09.7875340Z               "line": 207
2026-06-21T07:19:09.7875536Z             },
2026-06-21T07:19:09.7875641Z             {
2026-06-21T07:19:09.7875788Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T07:19:09.7875899Z               "line": 1082
2026-06-21T07:19:09.7876003Z             }
2026-06-21T07:19:09.7876102Z           ]
2026-06-21T07:19:09.7876208Z         },
2026-06-21T07:19:09.7876308Z         "unit": {
2026-06-21T07:19:09.7876417Z           "complete": true,
2026-06-21T07:19:09.7876528Z           "evidence": [
2026-06-21T07:19:09.7876618Z             {
2026-06-21T07:19:09.7876761Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7876866Z               "line": 490
2026-06-21T07:19:09.7876975Z             },
2026-06-21T07:19:09.7877076Z             {
2026-06-21T07:19:09.7877223Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7877333Z               "line": 616
2026-06-21T07:19:09.7877430Z             },
2026-06-21T07:19:09.7877538Z             {
2026-06-21T07:19:09.7877691Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.7877797Z               "line": 277
2026-06-21T07:19:09.7877895Z             },
2026-06-21T07:19:09.7877994Z             {
2026-06-21T07:19:09.7878142Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7878246Z               "line": 124
2026-06-21T07:19:09.7878350Z             },
2026-06-21T07:19:09.7878446Z             {
2026-06-21T07:19:09.7878579Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7878679Z               "line": 200
2026-06-21T07:19:09.7878780Z             }
2026-06-21T07:19:09.7878889Z           ]
2026-06-21T07:19:09.7879066Z         }
2026-06-21T07:19:09.7879176Z       }
2026-06-21T07:19:09.7879270Z     },
2026-06-21T07:19:09.7879367Z     {
2026-06-21T07:19:09.7879476Z       "id": "REQ-UPD-2",
2026-06-21T07:19:09.7879657Z       "title": "All binaries signature-verified before handoff",
2026-06-21T07:19:09.7879762Z       "requiredStages": [
2026-06-21T07:19:09.7879867Z         "impl",
2026-06-21T07:19:09.7879962Z         "unit"
2026-06-21T07:19:09.7880053Z       ],
2026-06-21T07:19:09.7880162Z       "stages": {
2026-06-21T07:19:09.7880263Z         "doc": {
2026-06-21T07:19:09.7880373Z           "complete": false,
2026-06-21T07:19:09.7880481Z           "evidence": []
2026-06-21T07:19:09.7880581Z         },
2026-06-21T07:19:09.7880690Z         "impl": {
2026-06-21T07:19:09.7880803Z           "complete": true,
2026-06-21T07:19:09.7880907Z           "evidence": [
2026-06-21T07:19:09.7881008Z             {
2026-06-21T07:19:09.7881150Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7881265Z               "line": 343
2026-06-21T07:19:09.7881361Z             },
2026-06-21T07:19:09.7881465Z             {
2026-06-21T07:19:09.7881609Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7881723Z               "line": 476
2026-06-21T07:19:09.7881822Z             },
2026-06-21T07:19:09.7881924Z             {
2026-06-21T07:19:09.7882066Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7882176Z               "line": 29
2026-06-21T07:19:09.7882282Z             },
2026-06-21T07:19:09.7882381Z             {
2026-06-21T07:19:09.7882515Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7882620Z               "line": 271
2026-06-21T07:19:09.7882734Z             },
2026-06-21T07:19:09.7882844Z             {
2026-06-21T07:19:09.7882973Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7883077Z               "line": 288
2026-06-21T07:19:09.7883179Z             },
2026-06-21T07:19:09.7883288Z             {
2026-06-21T07:19:09.7883524Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7883640Z               "line": 408
2026-06-21T07:19:09.7883743Z             },
2026-06-21T07:19:09.7883839Z             {
2026-06-21T07:19:09.7886644Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7886930Z               "line": 558
2026-06-21T07:19:09.7887041Z             },
2026-06-21T07:19:09.7887145Z             {
2026-06-21T07:19:09.7887297Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7887408Z               "line": 155
2026-06-21T07:19:09.7887503Z             }
2026-06-21T07:19:09.7887607Z           ]
2026-06-21T07:19:09.7887704Z         },
2026-06-21T07:19:09.7887807Z         "int": {
2026-06-21T07:19:09.7887917Z           "complete": false,
2026-06-21T07:19:09.7888029Z           "evidence": []
2026-06-21T07:19:09.7888126Z         },
2026-06-21T07:19:09.7888218Z         "unit": {
2026-06-21T07:19:09.7888329Z           "complete": true,
2026-06-21T07:19:09.7888441Z           "evidence": [
2026-06-21T07:19:09.7888540Z             {
2026-06-21T07:19:09.7888693Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7888801Z               "line": 750
2026-06-21T07:19:09.7888905Z             },
2026-06-21T07:19:09.7889078Z             {
2026-06-21T07:19:09.7889234Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7889345Z               "line": 811
2026-06-21T07:19:09.7889458Z             },
2026-06-21T07:19:09.7889559Z             {
2026-06-21T07:19:09.7889702Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7889807Z               "line": 825
2026-06-21T07:19:09.7889907Z             },
2026-06-21T07:19:09.7890003Z             {
2026-06-21T07:19:09.7890131Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7890242Z               "line": 841
2026-06-21T07:19:09.7890346Z             },
2026-06-21T07:19:09.7890441Z             {
2026-06-21T07:19:09.7890585Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7890693Z               "line": 932
2026-06-21T07:19:09.7890794Z             },
2026-06-21T07:19:09.7890896Z             {
2026-06-21T07:19:09.7891037Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7891155Z               "line": 414
2026-06-21T07:19:09.7891250Z             },
2026-06-21T07:19:09.7891353Z             {
2026-06-21T07:19:09.7891491Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7891593Z               "line": 427
2026-06-21T07:19:09.7891692Z             },
2026-06-21T07:19:09.7891797Z             {
2026-06-21T07:19:09.7891954Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.7892058Z               "line": 410
2026-06-21T07:19:09.7892165Z             }
2026-06-21T07:19:09.7892264Z           ]
2026-06-21T07:19:09.7892373Z         }
2026-06-21T07:19:09.7892470Z       }
2026-06-21T07:19:09.7892579Z     },
2026-06-21T07:19:09.7892679Z     {
2026-06-21T07:19:09.7892794Z       "id": "REQ-UPD-3",
2026-06-21T07:19:09.7892994Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T07:19:09.7893104Z       "requiredStages": [
2026-06-21T07:19:09.7893204Z         "impl",
2026-06-21T07:19:09.7893309Z         "unit",
2026-06-21T07:19:09.7893414Z         "int"
2026-06-21T07:19:09.7893519Z       ],
2026-06-21T07:19:09.7893623Z       "stages": {
2026-06-21T07:19:09.7893729Z         "doc": {
2026-06-21T07:19:09.7893838Z           "complete": false,
2026-06-21T07:19:09.7893946Z           "evidence": []
2026-06-21T07:19:09.7894046Z         },
2026-06-21T07:19:09.7894152Z         "impl": {
2026-06-21T07:19:09.7894270Z           "complete": true,
2026-06-21T07:19:09.7894370Z           "evidence": [
2026-06-21T07:19:09.7894467Z             {
2026-06-21T07:19:09.7894613Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7894715Z               "line": 40
2026-06-21T07:19:09.7894814Z             },
2026-06-21T07:19:09.7895014Z             {
2026-06-21T07:19:09.7895166Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7895271Z               "line": 87
2026-06-21T07:19:09.7895378Z             },
2026-06-21T07:19:09.7895477Z             {
2026-06-21T07:19:09.7895625Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T07:19:09.7895843Z               "line": 1042
2026-06-21T07:19:09.7895949Z             },
2026-06-21T07:19:09.7896050Z             {
2026-06-21T07:19:09.7896196Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T07:19:09.7896310Z               "line": 1977
2026-06-21T07:19:09.7896405Z             },
2026-06-21T07:19:09.7896508Z             {
2026-06-21T07:19:09.7896646Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7896748Z               "line": 26
2026-06-21T07:19:09.7896846Z             },
2026-06-21T07:19:09.7896942Z             {
2026-06-21T07:19:09.7897086Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7897194Z               "line": 114
2026-06-21T07:19:09.7897301Z             },
2026-06-21T07:19:09.7897400Z             {
2026-06-21T07:19:09.7897542Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7897654Z               "line": 246
2026-06-21T07:19:09.7897758Z             },
2026-06-21T07:19:09.7897857Z             {
2026-06-21T07:19:09.7897982Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7898087Z               "line": 2442
2026-06-21T07:19:09.7898177Z             }
2026-06-21T07:19:09.7898278Z           ]
2026-06-21T07:19:09.7898381Z         },
2026-06-21T07:19:09.7898487Z         "int": {
2026-06-21T07:19:09.7898598Z           "complete": true,
2026-06-21T07:19:09.7898701Z           "evidence": [
2026-06-21T07:19:09.7898802Z             {
2026-06-21T07:19:09.7899020Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T07:19:09.7899124Z               "line": 58
2026-06-21T07:19:09.7899230Z             }
2026-06-21T07:19:09.7899333Z           ]
2026-06-21T07:19:09.7899451Z         },
2026-06-21T07:19:09.7899552Z         "unit": {
2026-06-21T07:19:09.7899671Z           "complete": true,
2026-06-21T07:19:09.7899775Z           "evidence": [
2026-06-21T07:19:09.7899877Z             {
2026-06-21T07:19:09.7900033Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7900143Z               "line": 532
2026-06-21T07:19:09.7900243Z             },
2026-06-21T07:19:09.7900343Z             {
2026-06-21T07:19:09.7900487Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7900591Z               "line": 585
2026-06-21T07:19:09.7900691Z             },
2026-06-21T07:19:09.7900792Z             {
2026-06-21T07:19:09.7900930Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7901035Z               "line": 653
2026-06-21T07:19:09.7901126Z             },
2026-06-21T07:19:09.7901221Z             {
2026-06-21T07:19:09.7901364Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T07:19:09.7901470Z               "line": 1102
2026-06-21T07:19:09.7901573Z             },
2026-06-21T07:19:09.7901672Z             {
2026-06-21T07:19:09.7901815Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7901918Z               "line": 271
2026-06-21T07:19:09.7902022Z             },
2026-06-21T07:19:09.7902123Z             {
2026-06-21T07:19:09.7902252Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7902352Z               "line": 295
2026-06-21T07:19:09.7902453Z             },
2026-06-21T07:19:09.7902557Z             {
2026-06-21T07:19:09.7902691Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7902796Z               "line": 316
2026-06-21T07:19:09.7902900Z             },
2026-06-21T07:19:09.7903006Z             {
2026-06-21T07:19:09.7903134Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7903234Z               "line": 332
2026-06-21T07:19:09.7903430Z             }
2026-06-21T07:19:09.7903525Z           ]
2026-06-21T07:19:09.7903625Z         }
2026-06-21T07:19:09.7903731Z       }
2026-06-21T07:19:09.7903820Z     },
2026-06-21T07:19:09.7903916Z     {
2026-06-21T07:19:09.7904018Z       "id": "REQ-UPD-4",
2026-06-21T07:19:09.7904231Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T07:19:09.7904440Z       "requiredStages": [
2026-06-21T07:19:09.7904539Z         "impl",
2026-06-21T07:19:09.7904650Z         "unit"
2026-06-21T07:19:09.7904746Z       ],
2026-06-21T07:19:09.7904844Z       "stages": {
2026-06-21T07:19:09.7904940Z         "doc": {
2026-06-21T07:19:09.7905046Z           "complete": false,
2026-06-21T07:19:09.7905145Z           "evidence": []
2026-06-21T07:19:09.7905245Z         },
2026-06-21T07:19:09.7905346Z         "impl": {
2026-06-21T07:19:09.7905455Z           "complete": true,
2026-06-21T07:19:09.7905560Z           "evidence": [
2026-06-21T07:19:09.7905661Z             {
2026-06-21T07:19:09.7905808Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7905914Z               "line": 41
2026-06-21T07:19:09.7906018Z             },
2026-06-21T07:19:09.7906123Z             {
2026-06-21T07:19:09.7906267Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7906380Z               "line": 88
2026-06-21T07:19:09.7906480Z             },
2026-06-21T07:19:09.7906582Z             {
2026-06-21T07:19:09.7906723Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7906831Z               "line": 23
2026-06-21T07:19:09.7906932Z             },
2026-06-21T07:19:09.7907031Z             {
2026-06-21T07:19:09.7907168Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7907269Z               "line": 56
2026-06-21T07:19:09.7907373Z             },
2026-06-21T07:19:09.7907473Z             {
2026-06-21T07:19:09.7907607Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7907716Z               "line": 77
2026-06-21T07:19:09.7907817Z             },
2026-06-21T07:19:09.7907922Z             {
2026-06-21T07:19:09.7908064Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T07:19:09.7908166Z               "line": 236
2026-06-21T07:19:09.7908260Z             },
2026-06-21T07:19:09.7908360Z             {
2026-06-21T07:19:09.7908504Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T07:19:09.7908608Z               "line": 108
2026-06-21T07:19:09.7908713Z             },
2026-06-21T07:19:09.7908810Z             {
2026-06-21T07:19:09.7909057Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7909158Z               "line": 270
2026-06-21T07:19:09.7909261Z             },
2026-06-21T07:19:09.7909377Z             {
2026-06-21T07:19:09.7909506Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7909613Z               "line": 2441
2026-06-21T07:19:09.7909708Z             }
2026-06-21T07:19:09.7909814Z           ]
2026-06-21T07:19:09.7909921Z         },
2026-06-21T07:19:09.7910020Z         "int": {
2026-06-21T07:19:09.7910132Z           "complete": false,
2026-06-21T07:19:09.7910245Z           "evidence": []
2026-06-21T07:19:09.7910345Z         },
2026-06-21T07:19:09.7910442Z         "unit": {
2026-06-21T07:19:09.7910555Z           "complete": true,
2026-06-21T07:19:09.7910664Z           "evidence": [
2026-06-21T07:19:09.7910757Z             {
2026-06-21T07:19:09.7910907Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7911008Z               "line": 581
2026-06-21T07:19:09.7911109Z             },
2026-06-21T07:19:09.7911208Z             {
2026-06-21T07:19:09.7911347Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7911456Z               "line": 706
2026-06-21T07:19:09.7911556Z             },
2026-06-21T07:19:09.7911662Z             {
2026-06-21T07:19:09.7911795Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T07:19:09.7911895Z               "line": 384
2026-06-21T07:19:09.7912100Z             },
2026-06-21T07:19:09.7912204Z             {
2026-06-21T07:19:09.7912347Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7912445Z               "line": 102
2026-06-21T07:19:09.7912549Z             },
2026-06-21T07:19:09.7912640Z             {
2026-06-21T07:19:09.7912869Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7912965Z               "line": 123
2026-06-21T07:19:09.7913070Z             },
2026-06-21T07:19:09.7913169Z             {
2026-06-21T07:19:09.7913304Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T07:19:09.7913413Z               "line": 142
2026-06-21T07:19:09.7913503Z             },
2026-06-21T07:19:09.7913605Z             {
2026-06-21T07:19:09.7913732Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T07:19:09.7913837Z               "line": 582
2026-06-21T07:19:09.7913943Z             },
2026-06-21T07:19:09.7914042Z             {
2026-06-21T07:19:09.7914185Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T07:19:09.7914286Z               "line": 566
2026-06-21T07:19:09.7914385Z             },
2026-06-21T07:19:09.7914485Z             {
2026-06-21T07:19:09.7914615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7914719Z               "line": 8256
2026-06-21T07:19:09.7914825Z             }
2026-06-21T07:19:09.7914925Z           ]
2026-06-21T07:19:09.7915024Z         }
2026-06-21T07:19:09.7915123Z       }
2026-06-21T07:19:09.7915215Z     },
2026-06-21T07:19:09.7915315Z     {
2026-06-21T07:19:09.7915423Z       "id": "REQ-UPD-5",
2026-06-21T07:19:09.7915582Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T07:19:09.7915691Z       "requiredStages": [
2026-06-21T07:19:09.7915796Z         "impl",
2026-06-21T07:19:09.7915902Z         "unit"
2026-06-21T07:19:09.7915997Z       ],
2026-06-21T07:19:09.7916101Z       "stages": {
2026-06-21T07:19:09.7916207Z         "doc": {
2026-06-21T07:19:09.7916316Z           "complete": false,
2026-06-21T07:19:09.7916430Z           "evidence": []
2026-06-21T07:19:09.7916531Z         },
2026-06-21T07:19:09.7916635Z         "impl": {
2026-06-21T07:19:09.7916745Z           "complete": true,
2026-06-21T07:19:09.7916855Z           "evidence": [
2026-06-21T07:19:09.7916945Z             {
2026-06-21T07:19:09.7917103Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7917213Z               "line": 27
2026-06-21T07:19:09.7917311Z             },
2026-06-21T07:19:09.7917411Z             {
2026-06-21T07:19:09.7917558Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7917662Z               "line": 87
2026-06-21T07:19:09.7917767Z             },
2026-06-21T07:19:09.7917868Z             {
2026-06-21T07:19:09.7918014Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7918115Z               "line": 145
2026-06-21T07:19:09.7918220Z             },
2026-06-21T07:19:09.7918314Z             {
2026-06-21T07:19:09.7918464Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7918563Z               "line": 492
2026-06-21T07:19:09.7918663Z             },
2026-06-21T07:19:09.7918764Z             {
2026-06-21T07:19:09.7918906Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7919083Z               "line": 546
2026-06-21T07:19:09.7919183Z             }
2026-06-21T07:19:09.7919278Z           ]
2026-06-21T07:19:09.7919379Z         },
2026-06-21T07:19:09.7919483Z         "int": {
2026-06-21T07:19:09.7919597Z           "complete": false,
2026-06-21T07:19:09.7919704Z           "evidence": []
2026-06-21T07:19:09.7919807Z         },
2026-06-21T07:19:09.7919898Z         "unit": {
2026-06-21T07:19:09.7920014Z           "complete": true,
2026-06-21T07:19:09.7920118Z           "evidence": [
2026-06-21T07:19:09.7920217Z             {
2026-06-21T07:19:09.7920374Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7920477Z               "line": 272
2026-06-21T07:19:09.7920672Z             },
2026-06-21T07:19:09.7920773Z             {
2026-06-21T07:19:09.7920929Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7921025Z               "line": 286
2026-06-21T07:19:09.7921125Z             },
2026-06-21T07:19:09.7921321Z             {
2026-06-21T07:19:09.7921468Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7921568Z               "line": 300
2026-06-21T07:19:09.7921669Z             },
2026-06-21T07:19:09.7921764Z             {
2026-06-21T07:19:09.7921917Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7922017Z               "line": 314
2026-06-21T07:19:09.7922112Z             },
2026-06-21T07:19:09.7922213Z             {
2026-06-21T07:19:09.7922355Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7922460Z               "line": 348
2026-06-21T07:19:09.7922561Z             },
2026-06-21T07:19:09.7922665Z             {
2026-06-21T07:19:09.7922811Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7922917Z               "line": 1071
2026-06-21T07:19:09.7923015Z             }
2026-06-21T07:19:09.7923110Z           ]
2026-06-21T07:19:09.7923210Z         }
2026-06-21T07:19:09.7923311Z       }
2026-06-21T07:19:09.7923415Z     },
2026-06-21T07:19:09.7923510Z     {
2026-06-21T07:19:09.7923625Z       "id": "REQ-UPD-6",
2026-06-21T07:19:09.7924494Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T07:19:09.7924612Z       "requiredStages": [
2026-06-21T07:19:09.7924722Z         "doc",
2026-06-21T07:19:09.7924828Z         "impl",
2026-06-21T07:19:09.7924931Z         "unit",
2026-06-21T07:19:09.7925037Z         "int"
2026-06-21T07:19:09.7925138Z       ],
2026-06-21T07:19:09.7925245Z       "stages": {
2026-06-21T07:19:09.7925346Z         "doc": {
2026-06-21T07:19:09.7925467Z           "complete": true,
2026-06-21T07:19:09.7925570Z           "evidence": [
2026-06-21T07:19:09.7925669Z             {
2026-06-21T07:19:09.7925832Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T07:19:09.7925946Z               "line": 3
2026-06-21T07:19:09.7926046Z             },
2026-06-21T07:19:09.7926137Z             {
2026-06-21T07:19:09.7926270Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T07:19:09.7926366Z               "line": 3
2026-06-21T07:19:09.7926471Z             },
2026-06-21T07:19:09.7926571Z             {
2026-06-21T07:19:09.7926743Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T07:19:09.7926852Z               "line": 3
2026-06-21T07:19:09.7926947Z             }
2026-06-21T07:19:09.7927049Z           ]
2026-06-21T07:19:09.7927138Z         },
2026-06-21T07:19:09.7927243Z         "impl": {
2026-06-21T07:19:09.7927364Z           "complete": true,
2026-06-21T07:19:09.7927477Z           "evidence": [
2026-06-21T07:19:09.7927572Z             {
2026-06-21T07:19:09.7927721Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7927829Z               "line": 76
2026-06-21T07:19:09.7927933Z             },
2026-06-21T07:19:09.7928038Z             {
2026-06-21T07:19:09.7928184Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7928283Z               "line": 212
2026-06-21T07:19:09.7928395Z             },
2026-06-21T07:19:09.7928484Z             {
2026-06-21T07:19:09.7928632Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7928742Z               "line": 69
2026-06-21T07:19:09.7928851Z             },
2026-06-21T07:19:09.7929043Z             {
2026-06-21T07:19:09.7929184Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7929295Z               "line": 133
2026-06-21T07:19:09.7929557Z             },
2026-06-21T07:19:09.7929658Z             {
2026-06-21T07:19:09.7929805Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7929916Z               "line": 243
2026-06-21T07:19:09.7930010Z             },
2026-06-21T07:19:09.7930111Z             {
2026-06-21T07:19:09.7930353Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7930458Z               "line": 406
2026-06-21T07:19:09.7930560Z             },
2026-06-21T07:19:09.7930664Z             {
2026-06-21T07:19:09.7930805Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7930905Z               "line": 534
2026-06-21T07:19:09.7931018Z             },
2026-06-21T07:19:09.7931122Z             {
2026-06-21T07:19:09.7931266Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7931371Z               "line": 548
2026-06-21T07:19:09.7931465Z             },
2026-06-21T07:19:09.7931572Z             {
2026-06-21T07:19:09.7931723Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7931834Z               "line": 603
2026-06-21T07:19:09.7931933Z             },
2026-06-21T07:19:09.7932024Z             {
2026-06-21T07:19:09.7932163Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7932276Z               "line": 634
2026-06-21T07:19:09.7932381Z             },
2026-06-21T07:19:09.7932482Z             {
2026-06-21T07:19:09.7932628Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T07:19:09.7932739Z               "line": 137
2026-06-21T07:19:09.7932840Z             },
2026-06-21T07:19:09.7932938Z             {
2026-06-21T07:19:09.7933078Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T07:19:09.7933193Z               "line": 184
2026-06-21T07:19:09.7933296Z             },
2026-06-21T07:19:09.7933395Z             {
2026-06-21T07:19:09.7933543Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7933655Z               "line": 78
2026-06-21T07:19:09.7933751Z             },
2026-06-21T07:19:09.7933847Z             {
2026-06-21T07:19:09.7934004Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7934105Z               "line": 114
2026-06-21T07:19:09.7934210Z             },
2026-06-21T07:19:09.7934318Z             {
2026-06-21T07:19:09.7934458Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7934566Z               "line": 185
2026-06-21T07:19:09.7934671Z             },
2026-06-21T07:19:09.7934773Z             {
2026-06-21T07:19:09.7934914Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7935025Z               "line": 260
2026-06-21T07:19:09.7935125Z             },
2026-06-21T07:19:09.7935229Z             {
2026-06-21T07:19:09.7935369Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7935472Z               "line": 292
2026-06-21T07:19:09.7935577Z             },
2026-06-21T07:19:09.7935683Z             {
2026-06-21T07:19:09.7935825Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7935940Z               "line": 323
2026-06-21T07:19:09.7936037Z             },
2026-06-21T07:19:09.7936139Z             {
2026-06-21T07:19:09.7936282Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7936392Z               "line": 346
2026-06-21T07:19:09.7936497Z             },
2026-06-21T07:19:09.7936592Z             {
2026-06-21T07:19:09.7936731Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7936830Z               "line": 388
2026-06-21T07:19:09.7936931Z             },
2026-06-21T07:19:09.7937031Z             {
2026-06-21T07:19:09.7937164Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7937274Z               "line": 398
2026-06-21T07:19:09.7937369Z             },
2026-06-21T07:19:09.7937469Z             {
2026-06-21T07:19:09.7937613Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7937798Z               "line": 410
2026-06-21T07:19:09.7937904Z             },
2026-06-21T07:19:09.7937994Z             {
2026-06-21T07:19:09.7938137Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7938243Z               "line": 420
2026-06-21T07:19:09.7938346Z             },
2026-06-21T07:19:09.7938517Z             {
2026-06-21T07:19:09.7938659Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7938763Z               "line": 439
2026-06-21T07:19:09.7938863Z             },
2026-06-21T07:19:09.7939068Z             {
2026-06-21T07:19:09.7939207Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7939312Z               "line": 449
2026-06-21T07:19:09.7939416Z             },
2026-06-21T07:19:09.7939517Z             {
2026-06-21T07:19:09.7939664Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7939768Z               "line": 94
2026-06-21T07:19:09.7939874Z             },
2026-06-21T07:19:09.7939979Z             {
2026-06-21T07:19:09.7940122Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7940223Z               "line": 120
2026-06-21T07:19:09.7940327Z             },
2026-06-21T07:19:09.7940432Z             {
2026-06-21T07:19:09.7940566Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7940666Z               "line": 135
2026-06-21T07:19:09.7940761Z             },
2026-06-21T07:19:09.7940867Z             {
2026-06-21T07:19:09.7941004Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7941110Z               "line": 162
2026-06-21T07:19:09.7941219Z             },
2026-06-21T07:19:09.7941317Z             {
2026-06-21T07:19:09.7941452Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7941545Z               "line": 174
2026-06-21T07:19:09.7941653Z             },
2026-06-21T07:19:09.7941754Z             {
2026-06-21T07:19:09.7941888Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7941997Z               "line": 185
2026-06-21T07:19:09.7942098Z             },
2026-06-21T07:19:09.7942198Z             {
2026-06-21T07:19:09.7942326Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7942441Z               "line": 451
2026-06-21T07:19:09.7942551Z             },
2026-06-21T07:19:09.7942650Z             {
2026-06-21T07:19:09.7942794Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7942894Z               "line": 573
2026-06-21T07:19:09.7942999Z             },
2026-06-21T07:19:09.7943104Z             {
2026-06-21T07:19:09.7943242Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7943353Z               "line": 171
2026-06-21T07:19:09.7943457Z             },
2026-06-21T07:19:09.7943561Z             {
2026-06-21T07:19:09.7943701Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7943805Z               "line": 65
2026-06-21T07:19:09.7943899Z             },
2026-06-21T07:19:09.7944008Z             {
2026-06-21T07:19:09.7944154Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7944254Z               "line": 71
2026-06-21T07:19:09.7944359Z             },
2026-06-21T07:19:09.7944465Z             {
2026-06-21T07:19:09.7944602Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T07:19:09.7944712Z               "line": 77
2026-06-21T07:19:09.7944817Z             },
2026-06-21T07:19:09.7944921Z             {
2026-06-21T07:19:09.7945050Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7945159Z               "line": 778
2026-06-21T07:19:09.7945256Z             },
2026-06-21T07:19:09.7945365Z             {
2026-06-21T07:19:09.7945493Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7945599Z               "line": 795
2026-06-21T07:19:09.7945694Z             },
2026-06-21T07:19:09.7945799Z             {
2026-06-21T07:19:09.7945924Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7946127Z               "line": 838
2026-06-21T07:19:09.7946234Z             },
2026-06-21T07:19:09.7946333Z             {
2026-06-21T07:19:09.7946457Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7946568Z               "line": 981
2026-06-21T07:19:09.7946672Z             },
2026-06-21T07:19:09.7946861Z             {
2026-06-21T07:19:09.7946991Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7947104Z               "line": 1131
2026-06-21T07:19:09.7947205Z             }
2026-06-21T07:19:09.7947310Z           ]
2026-06-21T07:19:09.7947414Z         },
2026-06-21T07:19:09.7947510Z         "int": {
2026-06-21T07:19:09.7947615Z           "complete": true,
2026-06-21T07:19:09.7947719Z           "evidence": [
2026-06-21T07:19:09.7947830Z             {
2026-06-21T07:19:09.7947982Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.7948096Z               "line": 569
2026-06-21T07:19:09.7948202Z             },
2026-06-21T07:19:09.7948301Z             {
2026-06-21T07:19:09.7948450Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T07:19:09.7948554Z               "line": 135
2026-06-21T07:19:09.7948659Z             }
2026-06-21T07:19:09.7948754Z           ]
2026-06-21T07:19:09.7948865Z         },
2026-06-21T07:19:09.7949044Z         "unit": {
2026-06-21T07:19:09.7949149Z           "complete": true,
2026-06-21T07:19:09.7949257Z           "evidence": [
2026-06-21T07:19:09.7949370Z             {
2026-06-21T07:19:09.7949519Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7949624Z               "line": 626
2026-06-21T07:19:09.7949724Z             },
2026-06-21T07:19:09.7949824Z             {
2026-06-21T07:19:09.7949971Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7950077Z               "line": 675
2026-06-21T07:19:09.7950187Z             },
2026-06-21T07:19:09.7950286Z             {
2026-06-21T07:19:09.7950421Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T07:19:09.7950535Z               "line": 696
2026-06-21T07:19:09.7950639Z             },
2026-06-21T07:19:09.7950736Z             {
2026-06-21T07:19:09.7950878Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7950982Z               "line": 513
2026-06-21T07:19:09.7951093Z             },
2026-06-21T07:19:09.7951192Z             {
2026-06-21T07:19:09.7951336Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7951445Z               "line": 638
2026-06-21T07:19:09.7951545Z             },
2026-06-21T07:19:09.7951651Z             {
2026-06-21T07:19:09.7951784Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7951887Z               "line": 675
2026-06-21T07:19:09.7951987Z             },
2026-06-21T07:19:09.7952082Z             {
2026-06-21T07:19:09.7952228Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7952334Z               "line": 947
2026-06-21T07:19:09.7952439Z             },
2026-06-21T07:19:09.7952542Z             {
2026-06-21T07:19:09.7952692Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7952796Z               "line": 969
2026-06-21T07:19:09.7952890Z             },
2026-06-21T07:19:09.7953001Z             {
2026-06-21T07:19:09.7953125Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7953244Z               "line": 986
2026-06-21T07:19:09.7953340Z             },
2026-06-21T07:19:09.7953430Z             {
2026-06-21T07:19:09.7953568Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7953679Z               "line": 1001
2026-06-21T07:19:09.7953783Z             },
2026-06-21T07:19:09.7953883Z             {
2026-06-21T07:19:09.7954017Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7954126Z               "line": 1027
2026-06-21T07:19:09.7954232Z             },
2026-06-21T07:19:09.7954341Z             {
2026-06-21T07:19:09.7954473Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T07:19:09.7954686Z               "line": 457
2026-06-21T07:19:09.7954785Z             },
2026-06-21T07:19:09.7954886Z             {
2026-06-21T07:19:09.7955039Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T07:19:09.7955152Z               "line": 338
2026-06-21T07:19:09.7955349Z             },
2026-06-21T07:19:09.7955453Z             {
2026-06-21T07:19:09.7955582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7955692Z               "line": 10549
2026-06-21T07:19:09.7955796Z             },
2026-06-21T07:19:09.7955897Z             {
2026-06-21T07:19:09.7956021Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7956130Z               "line": 1260
2026-06-21T07:19:09.7956231Z             },
2026-06-21T07:19:09.7956331Z             {
2026-06-21T07:19:09.7956470Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T07:19:09.7956588Z               "line": 130
2026-06-21T07:19:09.7956692Z             }
2026-06-21T07:19:09.7956794Z           ]
2026-06-21T07:19:09.7956898Z         }
2026-06-21T07:19:09.7956998Z       }
2026-06-21T07:19:09.7957100Z     },
2026-06-21T07:19:09.7957199Z     {
2026-06-21T07:19:09.7957312Z       "id": "REQ-UPD-7",
2026-06-21T07:19:09.7959647Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T07:19:09.7959780Z       "requiredStages": [
2026-06-21T07:19:09.7959893Z         "impl",
2026-06-21T07:19:09.7960007Z         "unit"
2026-06-21T07:19:09.7960113Z       ],
2026-06-21T07:19:09.7960217Z       "stages": {
2026-06-21T07:19:09.7960312Z         "doc": {
2026-06-21T07:19:09.7960422Z           "complete": false,
2026-06-21T07:19:09.7960531Z           "evidence": []
2026-06-21T07:19:09.7960642Z         },
2026-06-21T07:19:09.7960742Z         "impl": {
2026-06-21T07:19:09.7960846Z           "complete": true,
2026-06-21T07:19:09.7960952Z           "evidence": [
2026-06-21T07:19:09.7961056Z             {
2026-06-21T07:19:09.7961189Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7961300Z               "line": 2626
2026-06-21T07:19:09.7961399Z             }
2026-06-21T07:19:09.7961509Z           ]
2026-06-21T07:19:09.7961611Z         },
2026-06-21T07:19:09.7961714Z         "int": {
2026-06-21T07:19:09.7961824Z           "complete": false,
2026-06-21T07:19:09.7961935Z           "evidence": []
2026-06-21T07:19:09.7962029Z         },
2026-06-21T07:19:09.7962134Z         "unit": {
2026-06-21T07:19:09.7962240Z           "complete": true,
2026-06-21T07:19:09.7962353Z           "evidence": [
2026-06-21T07:19:09.7962461Z             {
2026-06-21T07:19:09.7962591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7962693Z               "line": 10525
2026-06-21T07:19:09.7962797Z             }
2026-06-21T07:19:09.7962913Z           ]
2026-06-21T07:19:09.7963008Z         }
2026-06-21T07:19:09.7963112Z       }
2026-06-21T07:19:09.7963214Z     },
2026-06-21T07:19:09.7963314Z     {
2026-06-21T07:19:09.7963427Z       "id": "REQ-UPD-8",
2026-06-21T07:19:09.7966023Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T07:19:09.7966361Z       "requiredStages": [
2026-06-21T07:19:09.7966471Z         "impl",
2026-06-21T07:19:09.7966567Z         "unit"
2026-06-21T07:19:09.7969497Z       ],
2026-06-21T07:19:09.7969642Z       "stages": {
2026-06-21T07:19:09.7969736Z         "doc": {
2026-06-21T07:19:09.7969846Z           "complete": false,
2026-06-21T07:19:09.7969957Z           "evidence": []
2026-06-21T07:19:09.7970060Z         },
2026-06-21T07:19:09.7970150Z         "impl": {
2026-06-21T07:19:09.7970255Z           "complete": true,
2026-06-21T07:19:09.7970368Z           "evidence": [
2026-06-21T07:19:09.7970467Z             {
2026-06-21T07:19:09.7970630Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7970744Z               "line": 77
2026-06-21T07:19:09.7970844Z             },
2026-06-21T07:19:09.7970940Z             {
2026-06-21T07:19:09.7971096Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7971207Z               "line": 49
2026-06-21T07:19:09.7971302Z             },
2026-06-21T07:19:09.7971401Z             {
2026-06-21T07:19:09.7971546Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7971660Z               "line": 152
2026-06-21T07:19:09.7971754Z             },
2026-06-21T07:19:09.7971856Z             {
2026-06-21T07:19:09.7972003Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7972112Z               "line": 215
2026-06-21T07:19:09.7972218Z             },
2026-06-21T07:19:09.7972317Z             {
2026-06-21T07:19:09.7972461Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7972575Z               "line": 230
2026-06-21T07:19:09.7972684Z             },
2026-06-21T07:19:09.7972790Z             {
2026-06-21T07:19:09.7972932Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7973040Z               "line": 247
2026-06-21T07:19:09.7973136Z             },
2026-06-21T07:19:09.7973239Z             {
2026-06-21T07:19:09.7973372Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7973483Z               "line": 269
2026-06-21T07:19:09.7973587Z             },
2026-06-21T07:19:09.7973686Z             {
2026-06-21T07:19:09.7973821Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7973916Z               "line": 66
2026-06-21T07:19:09.7974020Z             },
2026-06-21T07:19:09.7974122Z             {
2026-06-21T07:19:09.7974259Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7974365Z               "line": 154
2026-06-21T07:19:09.7974474Z             },
2026-06-21T07:19:09.7974579Z             {
2026-06-21T07:19:09.7974703Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7974817Z               "line": 2430
2026-06-21T07:19:09.7974922Z             },
2026-06-21T07:19:09.7975013Z             {
2026-06-21T07:19:09.7975137Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7975247Z               "line": 2493
2026-06-21T07:19:09.7975348Z             },
2026-06-21T07:19:09.7975447Z             {
2026-06-21T07:19:09.7975574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7975684Z               "line": 2503
2026-06-21T07:19:09.7975783Z             },
2026-06-21T07:19:09.7975887Z             {
2026-06-21T07:19:09.7976011Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7976112Z               "line": 2510
2026-06-21T07:19:09.7976211Z             },
2026-06-21T07:19:09.7976321Z             {
2026-06-21T07:19:09.7976450Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7976698Z               "line": 2627
2026-06-21T07:19:09.7976803Z             },
2026-06-21T07:19:09.7976902Z             {
2026-06-21T07:19:09.7977036Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7977141Z               "line": 480
2026-06-21T07:19:09.7977337Z             },
2026-06-21T07:19:09.7977441Z             {
2026-06-21T07:19:09.7977566Z               "path": "crates/xtask/src/main.rs",
2026-06-21T07:19:09.7977671Z               "line": 494
2026-06-21T07:19:09.7977775Z             }
2026-06-21T07:19:09.7977881Z           ]
2026-06-21T07:19:09.7977981Z         },
2026-06-21T07:19:09.7978084Z         "int": {
2026-06-21T07:19:09.7978205Z           "complete": false,
2026-06-21T07:19:09.7978310Z           "evidence": []
2026-06-21T07:19:09.7978418Z         },
2026-06-21T07:19:09.7978517Z         "unit": {
2026-06-21T07:19:09.7978624Z           "complete": true,
2026-06-21T07:19:09.7978723Z           "evidence": [
2026-06-21T07:19:09.7978828Z             {
2026-06-21T07:19:09.7979061Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T07:19:09.7979171Z               "line": 476
2026-06-21T07:19:09.7979277Z             },
2026-06-21T07:19:09.7979381Z             {
2026-06-21T07:19:09.7979525Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T07:19:09.7979634Z               "line": 580
2026-06-21T07:19:09.7979733Z             },
2026-06-21T07:19:09.7979835Z             {
2026-06-21T07:19:09.7979958Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7980062Z               "line": 10527
2026-06-21T07:19:09.7980159Z             },
2026-06-21T07:19:09.7980264Z             {
2026-06-21T07:19:09.7980386Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7980503Z               "line": 10549
2026-06-21T07:19:09.7980606Z             }
2026-06-21T07:19:09.7980701Z           ]
2026-06-21T07:19:09.7980801Z         }
2026-06-21T07:19:09.7980900Z       }
2026-06-21T07:19:09.7980994Z     },
2026-06-21T07:19:09.7981094Z     {
2026-06-21T07:19:09.7981199Z       "id": "REQ-UPD-9",
2026-06-21T07:19:09.7983894Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T07:19:09.7984023Z       "requiredStages": [
2026-06-21T07:19:09.7984120Z         "doc",
2026-06-21T07:19:09.7984218Z         "impl",
2026-06-21T07:19:09.7984309Z         "unit"
2026-06-21T07:19:09.7984410Z       ],
2026-06-21T07:19:09.7984514Z       "stages": {
2026-06-21T07:19:09.7984620Z         "doc": {
2026-06-21T07:19:09.7984748Z           "complete": true,
2026-06-21T07:19:09.7984857Z           "evidence": [
2026-06-21T07:19:09.7984949Z             {
2026-06-21T07:19:09.7985062Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.7985167Z               "line": 93
2026-06-21T07:19:09.7985268Z             },
2026-06-21T07:19:09.7985373Z             {
2026-06-21T07:19:09.7985501Z               "path": "docs/MANIFEST.md",
2026-06-21T07:19:09.7985612Z               "line": 285
2026-06-21T07:19:09.7985711Z             }
2026-06-21T07:19:09.7985811Z           ]
2026-06-21T07:19:09.7985912Z         },
2026-06-21T07:19:09.7986017Z         "impl": {
2026-06-21T07:19:09.7986125Z           "complete": true,
2026-06-21T07:19:09.7986324Z           "evidence": [
2026-06-21T07:19:09.7986428Z             {
2026-06-21T07:19:09.7986595Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7986700Z               "line": 128
2026-06-21T07:19:09.7986804Z             },
2026-06-21T07:19:09.7986901Z             {
2026-06-21T07:19:09.7987162Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7987262Z               "line": 533
2026-06-21T07:19:09.7987367Z             },
2026-06-21T07:19:09.7987467Z             {
2026-06-21T07:19:09.7987615Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7987724Z               "line": 459
2026-06-21T07:19:09.7987816Z             },
2026-06-21T07:19:09.7987920Z             {
2026-06-21T07:19:09.7988068Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7988174Z               "line": 505
2026-06-21T07:19:09.7988278Z             },
2026-06-21T07:19:09.7988378Z             {
2026-06-21T07:19:09.7988532Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7988630Z               "line": 928
2026-06-21T07:19:09.7988736Z             },
2026-06-21T07:19:09.7988837Z             {
2026-06-21T07:19:09.7989044Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T07:19:09.7989159Z               "line": 302
2026-06-21T07:19:09.7989260Z             },
2026-06-21T07:19:09.7989373Z             {
2026-06-21T07:19:09.7989494Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7989603Z               "line": 5675
2026-06-21T07:19:09.7989707Z             },
2026-06-21T07:19:09.7989808Z             {
2026-06-21T07:19:09.7989932Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7990037Z               "line": 5720
2026-06-21T07:19:09.7990137Z             },
2026-06-21T07:19:09.7990237Z             {
2026-06-21T07:19:09.7990356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7990466Z               "line": 5857
2026-06-21T07:19:09.7990566Z             },
2026-06-21T07:19:09.7990666Z             {
2026-06-21T07:19:09.7990781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7990880Z               "line": 5878
2026-06-21T07:19:09.7990976Z             },
2026-06-21T07:19:09.7991082Z             {
2026-06-21T07:19:09.7991213Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7991317Z               "line": 5901
2026-06-21T07:19:09.7991423Z             },
2026-06-21T07:19:09.7991512Z             {
2026-06-21T07:19:09.7991639Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7991741Z               "line": 5928
2026-06-21T07:19:09.7991845Z             }
2026-06-21T07:19:09.7991945Z           ]
2026-06-21T07:19:09.7992046Z         },
2026-06-21T07:19:09.7992146Z         "int": {
2026-06-21T07:19:09.7992250Z           "complete": false,
2026-06-21T07:19:09.7992361Z           "evidence": []
2026-06-21T07:19:09.7992456Z         },
2026-06-21T07:19:09.7992550Z         "unit": {
2026-06-21T07:19:09.7992666Z           "complete": true,
2026-06-21T07:19:09.7992775Z           "evidence": [
2026-06-21T07:19:09.7992879Z             {
2026-06-21T07:19:09.7993042Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T07:19:09.7993151Z               "line": 259
2026-06-21T07:19:09.7993257Z             },
2026-06-21T07:19:09.7993357Z             {
2026-06-21T07:19:09.7993504Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T07:19:09.7993610Z               "line": 657
2026-06-21T07:19:09.7993710Z             },
2026-06-21T07:19:09.7993805Z             {
2026-06-21T07:19:09.7993949Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T07:19:09.7994052Z               "line": 1107
2026-06-21T07:19:09.7994156Z             },
2026-06-21T07:19:09.7994256Z             {
2026-06-21T07:19:09.7994384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.7994488Z               "line": 7565
2026-06-21T07:19:09.7994588Z             }
2026-06-21T07:19:09.7994793Z           ]
2026-06-21T07:19:09.7994899Z         }
2026-06-21T07:19:09.7994999Z       }
2026-06-21T07:19:09.7995098Z     },
2026-06-21T07:19:09.7995199Z     {
2026-06-21T07:19:09.7995308Z       "id": "REQ-WHOAMI-1",
2026-06-21T07:19:09.7997049Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T07:19:09.7998700Z       "requiredStages": [
2026-06-21T07:19:09.7999025Z         "doc",
2026-06-21T07:19:09.7999224Z         "impl",
2026-06-21T07:19:09.7999430Z         "unit"
2026-06-21T07:19:09.7999628Z       ],
2026-06-21T07:19:09.7999834Z       "stages": {
2026-06-21T07:19:09.8000034Z         "doc": {
2026-06-21T07:19:09.8000243Z           "complete": true,
2026-06-21T07:19:09.8000478Z           "evidence": [
2026-06-21T07:19:09.8000697Z             {
2026-06-21T07:19:09.8000901Z               "path": "CONTEXT.md",
2026-06-21T07:19:09.8001159Z               "line": 707
2026-06-21T07:19:09.8001379Z             }
2026-06-21T07:19:09.8001574Z           ]
2026-06-21T07:19:09.8001764Z         },
2026-06-21T07:19:09.8001945Z         "impl": {
2026-06-21T07:19:09.8002166Z           "complete": true,
2026-06-21T07:19:09.8002405Z           "evidence": [
2026-06-21T07:19:09.8002616Z             {
2026-06-21T07:19:09.8002843Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.8003115Z               "line": 3190
2026-06-21T07:19:09.8003335Z             },
2026-06-21T07:19:09.8003541Z             {
2026-06-21T07:19:09.8003759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.8004017Z               "line": 3218
2026-06-21T07:19:09.8004246Z             }
2026-06-21T07:19:09.8004428Z           ]
2026-06-21T07:19:09.8004627Z         },
2026-06-21T07:19:09.8004817Z         "int": {
2026-06-21T07:19:09.8005029Z           "complete": false,
2026-06-21T07:19:09.8005263Z           "evidence": []
2026-06-21T07:19:09.8005488Z         },
2026-06-21T07:19:09.8005682Z         "unit": {
2026-06-21T07:19:09.8005898Z           "complete": true,
2026-06-21T07:19:09.8006136Z           "evidence": [
2026-06-21T07:19:09.8006350Z             {
2026-06-21T07:19:09.8006569Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.8006869Z               "line": 7847
2026-06-21T07:19:09.8007095Z             },
2026-06-21T07:19:09.8007292Z             {
2026-06-21T07:19:09.8007505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T07:19:09.8007763Z               "line": 7900
2026-06-21T07:19:09.8007977Z             }
2026-06-21T07:19:09.8008168Z           ]
2026-06-21T07:19:09.8008360Z         }
2026-06-21T07:19:09.8008554Z       }
2026-06-21T07:19:09.8008740Z     }
2026-06-21T07:19:09.8008931Z   ],
2026-06-21T07:19:09.8009203Z   "findings": []
2026-06-21T07:19:09.8009393Z }
